1 00:00:00,000 --> 00:00:02,000 [Powered by Google Translate] [セミナー] [IOS:ボスのようなアプリを書く] 2 00:00:02,000 --> 00:00:04,000 [トミーM​​acWilliam] [ハーバード大学] 3 00:00:04,000 --> 00:00:08,000 [これはCS50です。] [CS50.TV] 4 00:00:08,000 --> 00:00:12,000 >> すべての権利は​​、誰に、iOSへの歓迎:ボスのようなライティングアプリ。 5 00:00:12,000 --> 00:00:16,000 このセミナーでは、iPhone用アプリの作成に集中しようとしている 6 00:00:16,000 --> 00:00:19,000 そして今度はiPad用のアプリを書くので、私たちは基本的にウォークスルーするつもりだ 7 00:00:19,000 --> 00:00:23,000 アプリを作る方法のカップル異なる例、Tic Tac Toeのような簡単なゲーム、 8 00:00:23,000 --> 00:00:26,000 または、ニュースリーダーのいくつかの種類のようなアプリを作ることでより興味があるなら 9 00:00:26,000 --> 00:00:30,000 または私もそのことについてお話しますインターネットとやり取り何か。 10 00:00:30,000 --> 00:00:32,000 ここに私たちの簡単な議題だ。 11 00:00:32,000 --> 00:00:36,000 >> iOSアプリは、Objective-Cのと呼ばれる言語で書かれています 12 00:00:36,000 --> 00:00:39,000 やので、これは、C言語に似ていますが、しない本当にまったく少しです 13 00:00:39,000 --> 00:00:41,000 ので、我々は言語そのものについて少しお話します 14 00:00:41,000 --> 00:00:45,000 その後どのようにXCodeのと呼ばれるこのアプリのプログラムを使用して、iPhoneアプリを構築するためには、 15 00:00:45,000 --> 00:00:48,000 あなたがまだそれをダウンロードしていない場合はどの今ダウンロードを開始して自由に感じる。 16 00:00:48,000 --> 00:00:50,000 それは、数ギガバイトだ。 17 00:00:50,000 --> 00:00:54,000 これは、App Storeで無料であるべきなので、Macを持っている必要があります 18 00:00:54,000 --> 00:00:57,000 理想的にはOS Xの最新バージョンを実行して 19 00:00:57,000 --> 00:00:59,000 あなたがわからない場合は、問題ありません。 20 00:00:59,000 --> 00:01:02,000 私達はあなたの使用のために利用可能な科学センター内のMacを持っている 21 00:01:02,000 --> 00:01:05,000 Xcodeをインストールした、というような開発のためのそれらを使用して自由に感じる。 22 00:01:05,000 --> 00:01:07,000 あなたはアプリを作成したいが、Macを持っていない場合は、心配しないでください。 23 00:01:07,000 --> 00:01:09,000 そのためのキャンパス資源がたくさんあり​​ます。 24 00:01:09,000 --> 00:01:15,000 それで、我々はあなたが作るこ​​とができ、異なるアプリケーションの2より大きい例をカバーするつもりです。 25 00:01:15,000 --> 00:01:19,000 Objective-CはCのスーパーセットと呼ばれるものであり、技術的に 26 00:01:19,000 --> 00:01:24,000 それは、任意のCコードも有効なObjective-Cのコードであることを意味します。 27 00:01:24,000 --> 00:01:29,000 我々はダクトの種類がCにいくつかの追加機能にテープで留めていることを意味します 28 00:01:29,000 --> 00:01:33,000 これらの機能のいくつかは、これまでに神に感謝し、再度malloc関数を記述することではない含む 29 00:01:33,000 --> 00:01:36,000 それらの愚かなポインタとそれらを解放するとすべてのものを心配することはありません 30 00:01:36,000 --> 00:01:40,000 あなたは、Cについて憎み、それがObjective-Cで行ったようなものだ。 31 00:01:40,000 --> 00:01:43,000 >> さて、Objective-Cはまた、はるかに大きな標準ライブラリを持っている 32 00:01:43,000 --> 00:01:47,000 ので、Objective-Cのフリー内部のために得る、より多くの機能があります。 33 00:01:47,000 --> 00:01:50,000 我々は我々が行ったから気づいPHPを書いていたときのことを覚えて 34 00:01:50,000 --> 00:01:54,000 あなたが行うことができますすべてのこれらの狂気の事の巨大なライブラリにこの最小の言語。 35 00:01:54,000 --> 00:01:56,000 同じことは、iOSで行われます。 36 00:01:56,000 --> 00:01:59,000 そこに仏教のカレンダーのようなもののためのオブジェクトだし、本当に何 37 00:01:59,000 --> 00:02:05,000 あなたはおそらく、おそらくObjective-Cの実装ですでに存在していると考えることができます。 38 00:02:05,000 --> 00:02:08,000 Objective-Cの客観的な部分は何かを参照しています 39 00:02:08,000 --> 00:02:11,000 オブジェクト指向プログラミングと呼ばれる。 40 00:02:11,000 --> 00:02:14,000 これは新しい概念の一種であるが、我々は実際にほとんど学んだ 41 00:02:14,000 --> 00:02:17,000 すでに、これらの概念の多く。 42 00:02:17,000 --> 00:02:19,000 オブジェクト指向プログラミングの背後にある考え方は、構造になるだろうということです 43 00:02:19,000 --> 00:02:23,000 これらのものの周りにあなたのコードの多くは、クラスと呼ば 44 00:02:23,000 --> 00:02:26,000 そして、これらのクラスは、本当に構造体をあがめている。 45 00:02:26,000 --> 00:02:30,000 構造体の内部では、基本的にここで言われた、ものです 46 00:02:30,000 --> 00:02:32,000 そしてこのことは、メンバーを持つことができます。 47 00:02:32,000 --> 00:02:35,000 たとえば、リンクリスト内のノードは、他のものを持つことができ 48 00:02:35,000 --> 00:02:38,000 値のように、リスト内の次のノードへのポインタ、 49 00:02:38,000 --> 00:02:44,000 と一緒にポインタと、その値は構造体のこのつのインスタンスを構成している。 50 00:02:44,000 --> 00:02:47,000 を除いたクラスは、非常に類似している 51 00:02:47,000 --> 00:02:50,000 クラスでも、それらの内部機能を持つことができます。 52 00:02:50,000 --> 00:02:54,000 我々にはstructが宣言されたとき、我々は唯一のint nまたは次のノード*を言うことができます。 53 00:02:54,000 --> 00:02:57,000 >> 今のObjective-Cで、私たちは実際に関数を置くことができます 54 00:02:57,000 --> 00:02:59,000 それらのものの内側。 55 00:02:59,000 --> 00:03:03,000 クラスが行うことができますもう一つは、彼らが他のクラスからのデータを継承することができますです。 56 00:03:03,000 --> 00:03:07,000 例えば、私たちは、組み込みのObjective-Cクラスの束を見ることになります。 57 00:03:07,000 --> 00:03:11,000 そのうちの一つは、画面のビューを表すクラスである場合もあり 58 00:03:11,000 --> 00:03:14,000 そしてそう言って、私は私自身のビューを実装したい 59 00:03:14,000 --> 00:03:18,000 我々は基本的にAppleの上の誰か、おそらく本当に素敵な人を言う 60 00:03:18,000 --> 00:03:21,000 私のためにこのクラスを書いて、それはボタンを表示するようなものを処理する 61 00:03:21,000 --> 00:03:25,000 または画面をレンダリングする、我々は本当に苦しそうになる 62 00:03:25,000 --> 00:03:28,000 すべてその機能自分自身を実装するなど、単純で 63 00:03:28,000 --> 00:03:31,000 データ継承する私たちは、あなたがそのクラスでやったすべてのことを言うことができます 64 00:03:31,000 --> 00:03:34,000 私はまた、私のクラスの内部で欲しいし、私は、いくつか他のものをするつもりです 65 00:03:34,000 --> 00:03:37,000 つまり、アプリを実装しています。 66 00:03:37,000 --> 00:03:40,000 それはのその言葉の継承が何を意味するのか。我々は、より具体的な例を紹介します。 67 00:03:40,000 --> 00:03:42,000 >> そして最後に、オブジェクト指向プログラミングに鍵があることを 68 00:03:42,000 --> 00:03:45,000 それはデータのカプセル化につながる。 69 00:03:45,000 --> 00:03:48,000 我々の問題のうちのいくつかでは、我々はこれらの大きい、グローバル変数を及ぼす可能性があります設定 70 00:03:48,000 --> 00:03:51,000 そしてどこでもグローバル、それは我々が状態を追跡したい方法です。 71 00:03:51,000 --> 00:03:55,000 クラスとは、オブジェクトの内部情報をカプセル化して起動することができます。 72 00:03:55,000 --> 00:03:58,000 我々は我々のアプリの1つの画面を持っている場合、私たちは本当にから任意のデータを持っている必要はありません 73 00:03:58,000 --> 00:04:01,000 その我々のアプリの内部で別の画面、 74 00:04:01,000 --> 00:04:04,000 などのクラス内で物事をカプセル化することで、これは実際につながる 75 00:04:04,000 --> 00:04:08,000 より良いコード設計に、これは付加的な機能のいくつかを持つことが可能です 76 00:04:08,000 --> 00:04:11,000 Objective-Cの。 77 00:04:11,000 --> 00:04:15,000 事前警告は、Objective-Cの構文は、バナナです。 78 00:04:15,000 --> 00:04:19,000 それは、今まで見てきた何のようである 79 00:04:19,000 --> 00:04:22,000 ので、それに慣れるには学習曲線の少しです 80 00:04:22,000 --> 00:04:24,000 これは一体何を意味するのでしょうか? 81 00:04:24,000 --> 00:04:27,000 しかし、一度はそれが本当に、本当に滑らかな初期の学習曲線という過去の取得 82 00:04:27,000 --> 00:04:29,000 アプリの書き込みを開始する。 83 00:04:29,000 --> 00:04:33,000 >> ここで言っても、クラスを宣言することは、私のクラスであり、それが存在する、 84 00:04:33,000 --> 00:04:35,000 そしておそらくここで私が後で定義するつもりだいくつかのものがある 85 00:04:35,000 --> 00:04:38,000 私は@インタフェースを言うつもりです。 86 00:04:38,000 --> 00:04:41,000 私は@インタフェースを言うつもりです。私はクラスの名前を与えるつもりだ。 87 00:04:41,000 --> 00:04:43,000 し、その後どこかに私は@終わりを言おうとしてんだけど、 88 00:04:43,000 --> 00:04:46,000 @インターフェイスと@ endの間に、すべて 89 00:04:46,000 --> 00:04:48,000 私のクラスになるだろう。 90 00:04:48,000 --> 00:04:51,000 それは私たちのhファイルの中身になるだろう。 91 00:04:51,000 --> 00:04:55,000 ちょうどCのような私達。hファイルは基本的に存在することになり、いくつかの物事がここで述べている。 92 00:04:55,000 --> 00:04:57,000 私は必ずしも、彼らはまだやるべきことを語っていないよ 93 00:04:57,000 --> 00:04:59,000 コンパイラは、彼らが存在していることを知っている必要があります。 94 00:04:59,000 --> 00:05:04,000 後で内側にObjective-Cのための私達。mファイル-mのため 95 00:05:04,000 --> 00:05:08,000 我々は実際にこれらのクラスは何をすべきかを定義しようとしているところです。 96 00:05:08,000 --> 00:05:11,000 ずっと私たちのcファイルのように、我々は関数の実装を提供しました。 97 00:05:11,000 --> 00:05:15,000 私たちの。メートルの内側に私たちがここで言おうとしているファイルには、どのようなすべての関数である 98 00:05:15,000 --> 00:05:18,000 私のクラス彼らはすべてやるの内側。 99 00:05:18,000 --> 00:05:22,000 そして最後に、我々はそれらの中括弧の中に言うことができる構造体の内部 100 00:05:22,000 --> 00:05:25,000 int型のnまたはノード*次回、 101 00:05:25,000 --> 00:05:28,000 とObjective-Cで我々は、キーワード@プロパティを使用するつもりだ、 102 00:05:28,000 --> 00:05:31,000 これは、プロパティを定義するために何が起こっているのです 103 00:05:31,000 --> 00:05:36,000 私のクラスの一部であるか、非機能。 104 00:05:36,000 --> 00:05:40,000 >> Objective-Cの関数を呼び出すこともバナナです。 105 00:05:40,000 --> 00:05:43,000 我々はC言語の関数を宣言したとき、我々はint fooのような何かを言った 106 00:05:43,000 --> 00:05:46,000 その後括弧オープンではそれを引数のリストを与えた。 107 00:05:46,000 --> 00:05:51,000 これは、メソッドや関数を宣言するには、Objective-Cのように見えるものです。 108 00:05:51,000 --> 00:05:54,000 私は、関数やメソッドを宣言する場合 109 00:05:54,000 --> 00:05:58,000 私は方法は、本当にクラスのメンバーである関数であると言っている場所 110 00:05:58,000 --> 00:06:01,000 交換の一種ではなく、実際には、そう 111 00:06:01,000 --> 00:06:03,000 私のメソッドの内部ので、私は新しいメソッドを作成したいと思います。 112 00:06:03,000 --> 00:06:06,000 それは、何も返さないようにするために起こっているので、void型になるだろう。 113 00:06:06,000 --> 00:06:08,000 これは私の関数の戻り値の型です。 114 00:06:08,000 --> 00:06:11,000 - 私は知らないので、今、私たちは、ここに括弧を持っています。 115 00:06:11,000 --> 00:06:14,000 次は、私の関数の名前であることを行っている 116 00:06:14,000 --> 00:06:17,000 そして最後に、我々はCで持っていただけのようにセミコロンを持っている 117 00:06:17,000 --> 00:06:19,000 ここで何が新しいのは、この男はここにある。 118 00:06:19,000 --> 00:06:22,000 このハイフンは実際には必要であり、これが何を言うことはつまり 119 00:06:22,000 --> 00:06:26,000 ここでは、このメソッドはクラスのインスタンスを呼び出す必要があります。 120 00:06:26,000 --> 00:06:29,000 >> 我々は、構造体を宣言した後、我々は、おそらく何かのように言った 121 00:06:29,000 --> 00:06:32,000 構造ノードnと、その実際の作成 122 00:06:32,000 --> 00:06:35,000 私が実際に作業を開始することができるように、または、それらの構造体のいずれかをインスタンス化 123 00:06:35,000 --> 00:06:38,000 その中に何があるため、このダッシュは、我々がしなければならないことを意味 124 00:06:38,000 --> 00:06:41,000 ちょうど私達がインスタンス化のようなクラスをインスタンス化し、その構造体 125 00:06:41,000 --> 00:06:43,000 我々はそれにこのメソッドを呼び出すことができます前に。 126 00:06:43,000 --> 00:06:46,000 私は私のメソッドに引数を追加して起動したい場合 127 00:06:46,000 --> 00:06:48,000 それはさらにバナナを取得します。 128 00:06:48,000 --> 00:06:50,000 ここに私のメソッド名です。 129 00:06:50,000 --> 00:06:53,000 それから私は、コロンを持っているつもりだし、このコロンの後に、それはいくつかの引数をここに来ると言います。 130 00:06:53,000 --> 00:06:56,000 このメソッドは引数を一つ取る。 131 00:06:56,000 --> 00:06:59,000 その引数の型はintで、その引数の名前である 132 00:06:59,000 --> 00:07:03,000 または私はメソッドの内部で使用を開始するつもりだと変数iと呼ばれています。 133 00:07:03,000 --> 00:07:05,000 繰り返しますが、この方法です。それは1つの引数を取ります。 134 00:07:05,000 --> 00:07:10,000 >> あなたがより多くの引数を追加起動したい場合、それはより多くのバナナを取得 135 00:07:10,000 --> 00:07:13,000 という点で、我々はここで言うこのコロンは、引数の私のリストを付属していました。 136 00:07:13,000 --> 00:07:15,000 この最初の引数は整数である。 137 00:07:15,000 --> 00:07:17,000 さて、この2番目の引数は面白いです。 138 00:07:17,000 --> 00:07:20,000 私は関数の内部で使用するつもりだという変数 139 00:07:20,000 --> 00:07:23,000 私が言うことができる私の関数のように内部にFと呼ばれ、 140 00:07:23,000 --> 00:07:25,000 F + = 1または何か。 141 00:07:25,000 --> 00:07:30,000 ここで、このことは、基本的にその引数またはパラメータのキーです。 142 00:07:30,000 --> 00:07:34,000 我々は、キーと値のペアを持っていて、JSONまたは連想配列のようなものと同じように 143 00:07:34,000 --> 00:07:37,000 Objective-Cはそれが本当に明らかだだけので、大丈夫、と言うことを決定しました 144 00:07:37,000 --> 00:07:39,000 あなたはこれらのすべてのパラメータが何であるメソッドを呼び出したとき 145 00:07:39,000 --> 00:07:41,000 私は実際にそれらすべてに名前を付けるつもりです。 146 00:07:41,000 --> 00:07:45,000 メソッドを呼び出すときは、実際には、andFloat言うよ 147 00:07:45,000 --> 00:07:47,000 その後、あなたはそれをインチ渡すよ 148 00:07:47,000 --> 00:07:50,000 >> 興味深いことに、この1つは、名前が付けられますが、他のすべてのパラメータがありますされていません 149 00:07:50,000 --> 00:07:53,000 我々は第三引数を持っていた場合ので、私はandFloatを言うことができる 150 00:07:53,000 --> 00:07:56,000 と別のフロートなど。 151 00:07:56,000 --> 00:08:01,000 私はこれらのメソッドを呼び出すとき、それは、もちろんバナナのです 152 00:08:01,000 --> 00:08:04,000 ので、私はオブジェクトを持っている、と私は、fooというメソッドを定義した場合 153 00:08:04,000 --> 00:08:09,000 と私はそれを呼びたいのではなく、fooの開/閉括弧を言って 154 00:08:09,000 --> 00:08:11,000 私はブラケットを開くつもりです。 155 00:08:11,000 --> 00:08:13,000 ここに私のメソッドの名前です。 156 00:08:13,000 --> 00:08:17,000 私はブラケットを閉じてするつもりだ、とこれは私がそれを呼び出しているオブジェクトです。 157 00:08:17,000 --> 00:08:20,000 覚えておいて、これらのすべてのメソッドは、クラス内に存在し 158 00:08:20,000 --> 00:08:23,000 クラスは、それらの内部に定義されたメソッドを持つことができるので。 159 00:08:23,000 --> 00:08:26,000 >> ここで私は勝手に、いくつかのクラスのオブジェクトを作成しました 160 00:08:26,000 --> 00:08:28,000 これはことを行うための構文です。 161 00:08:28,000 --> 00:08:31,000 オブジェクトを作成するための2つのステップがあります。 162 00:08:31,000 --> 00:08:34,000 最初のステップは、私がスペースを割り当てたいと言うことです。 163 00:08:34,000 --> 00:08:37,000 これはmalloc関数と等価です。我々はもはや、mallocを言う必要はありません。 164 00:08:37,000 --> 00:08:42,000 我々は、mを落としてallocを作り、。mで。cを取り替えた。 165 00:08:42,000 --> 00:08:47,000 我々のalloc何かの後に我々は、それを初期化する必要があります。 166 00:08:47,000 --> 00:08:49,000 基本的には、オブジェクトを作成する際には、いくつかのロジックを持っているしたい場合があり 167 00:08:49,000 --> 00:08:53,000 彼らが作成しているときに実行されることなので、いくつかのデフォルト値を渡すことができます 168 00:08:53,000 --> 00:08:57,000 またはそのような何かがないので、このinitメソッドは、実際にオブジェクトを作成するものです。 169 00:08:57,000 --> 00:08:59,000 私たちは最初に、我々はC言語でやったように、スペースを割り当てる 170 00:08:59,000 --> 00:09:04,000 それから私達はまたは全体の多くを行うことなくてもよい、それを初期化します。 171 00:09:04,000 --> 00:09:07,000 その後、我々はオブジェクトoにこの事を返そうとしている。 172 00:09:07,000 --> 00:09:09,000 これは技術的にはポインタであるため星が、ここにあります 173 00:09:09,000 --> 00:09:12,000 しかし心配しないで、ポインタはもうObjective-Cの中で大したことではありません。 174 00:09:12,000 --> 00:09:15,000 >> 今、私たちは、NSObjectと呼ばれるこのクラスをインスタンス化した、 175 00:09:15,000 --> 00:09:19,000 これはちょうどAppleが持っているランダムなクラスです。 176 00:09:19,000 --> 00:09:22,000 我々はこれをインスタンス化してきたが、今私は、このクラスのインスタンスを持っている 177 00:09:22,000 --> 00:09:25,000 このオブジェクトのoので、私は定義されている場合ことを意味します 178 00:09:25,000 --> 00:09:29,000 これらの方法は、私はこのようにそれらを呼び出すことができます。 179 00:09:29,000 --> 00:09:31,000 同様に、私は1つの引数を持つメソッドを呼び出したい場合は、 180 00:09:31,000 --> 00:09:34,000 ので、これは一つの引数をとりバー法、、です 181 00:09:34,000 --> 00:09:38,000 カックス法、これは2つの引数を取りますと、ここにバズです。 182 00:09:38,000 --> 00:09:44,000 これは、このオブジェクトoに1つの関数を呼び出すことです。 183 00:09:44,000 --> 00:09:46,000 理にかなって? 184 00:09:46,000 --> 00:09:50,000 構文は次の意味を持ちますが、あなたは一種のそれに慣れる。 185 00:09:50,000 --> 00:09:54,000 >> さて、のは、Objective-Cに組み込まれているいくつかのことについてお話ししましょう 186 00:09:54,000 --> 00:09:56,000 その必ずしもCにビルドされていない 187 00:09:56,000 --> 00:09:59,000 C言語では、種類のもので、これらの愚かな文字配列として文字列に対処しなければならなかった 188 00:09:59,000 --> 00:10:01,000 そしてそれは本当に迷惑だ。 189 00:10:01,000 --> 00:10:04,000 Objective-Cは、すべて私たちのために建てられたものがあり、それが組み込まれている 190 00:10:04,000 --> 00:10:06,000 NSStringクラスと呼ばれるこのクラスを使用しています。 191 00:10:06,000 --> 00:10:10,000 私はNSStringを作成したい場合、我々はもっと難解な構文があります。 192 00:10:10,000 --> 00:10:15,000 むしろ我々は@ "CS50"と言う "CS50"を言うより 193 00:10:15,000 --> 00:10:17,000 これは単なるObjective-Cで文字列を宣言するための構文です。 194 00:10:17,000 --> 00:10:21,000 これは忘れて、そうしないことは非常に簡単です。 195 00:10:21,000 --> 00:10:24,000 さて、かつて私はこれを持って、これは文字列ですが、気付く 196 00:10:24,000 --> 00:10:26,000 それだけで本当にオブジェクトです。 197 00:10:26,000 --> 00:10:30,000 私は言った私は、クラスをインスタンス化した意味は、NSString、 198 00:10:30,000 --> 00:10:32,000 他の誰かが私のために書いたNSStringの、と呼ばれる、 199 00:10:32,000 --> 00:10:35,000 そして、彼らは、今それについて非常に素敵だったし、 200 00:10:35,000 --> 00:10:37,000 私はそれに対してメソッドの呼び出しを開始することができます。 201 00:10:37,000 --> 00:10:40,000 私は、このオブジェクトの上のメソッドの長さを呼び出す場合 202 00:10:40,000 --> 00:10:43,000 それは私には文字列の長さを返すことになるだろう。 203 00:10:43,000 --> 00:10:45,000 これはCでちょうどstrlenのようなものです 204 00:10:45,000 --> 00:10:47,000 これは4を返します。 205 00:10:47,000 --> 00:10:51,000 >> 同様に、私は気にしたいかもしれない別のメソッドは、このcharacterAtIndexです。 206 00:10:51,000 --> 00:10:54,000 これは、この文字列sに言う方法です 207 00:10:54,000 --> 00:10:57,000 私は、あなたがゼロ番目の文字を取得したい 208 00:10:57,000 --> 00:10:59,000 やので、これは、私には、文字cを返します 209 00:10:59,000 --> 00:11:02,000 そして、これらのメソッドの全体の束以上は、あなたが本当に簡単にGoogleができることがあるのです。 210 00:11:02,000 --> 00:11:07,000 Appleのドキュメントは偉大であり、我々は少しのそのを見てみましょう。 211 00:11:07,000 --> 00:11:09,000 それらは文字列です。 212 00:11:09,000 --> 00:11:11,000 また、内蔵して可変サイズの配列を持っている 213 00:11:11,000 --> 00:11:13,000 我々は配列を宣言したときにC言語で覚えている 214 00:11:13,000 --> 00:11:16,000 我々はあなたが5つの要素、物語の終わりを持っていると言っていた。 215 00:11:16,000 --> 00:11:18,000 我々は、JavaScriptとPHPに着いたとき、我々は始めることができた 216 00:11:18,000 --> 00:11:20,000 要素を追加したり、要素を移動するようなことをやって。 217 00:11:20,000 --> 00:11:22,000 我々は、Objective-Cで同じことを行うことができます。 218 00:11:22,000 --> 00:11:26,000 通常のCの方法で配列を作成するのではなく、 219 00:11:26,000 --> 00:11:30,000 我々は再びNSMutableArrayのと呼ばれるもう一つのクラスを持っています。 220 00:11:30,000 --> 00:11:33,000 、NSArrayもあります 221 00:11:33,000 --> 00:11:35,000 そして、これは基本的にいくつかの配列をカプセル化しようとしている。 222 00:11:35,000 --> 00:11:38,000 これは私が最初にしたいことは、私が割り当てたいと言う 223 00:11:38,000 --> 00:11:41,000 新しいアレイに使用するスペースは、私はそれを割り当てた後、 224 00:11:41,000 --> 00:11:43,000 私は、それを初期化する必要があります。 225 00:11:43,000 --> 00:11:45,000 繰り返しになりますが、ちょうどこれらの2つのメソッドを呼び出す。 226 00:11:45,000 --> 00:11:48,000 さて、これは、このオブジェクトの、その内側を意味 227 00:11:48,000 --> 00:11:50,000 私はそこに座って、空の配列を持っています。 228 00:11:50,000 --> 00:11:54,000 私は、この配列に何かを追加したい場合は、私はaddObjectメソッドを呼び出すことができます。 229 00:11:54,000 --> 00:11:59,000 私は、配列にオブジェクトを追加したいと思い、私は、文字列CS50を追加したい。 230 00:11:59,000 --> 00:12:02,000 私は逆に私が言うことができることを削除したい場合は私がしたい 231 00:12:02,000 --> 00:12:09,000 配列またはオブジェクトの最初の場所にあるオブジェクトを削除します。 232 00:12:09,000 --> 00:12:11,000 >> 理にかなって? 233 00:12:11,000 --> 00:12:14,000 さて、あなたの種類のこの角括弧の事に慣れる。 234 00:12:14,000 --> 00:12:18,000 ちなみに、Appleのライブラリの多くの中にあなたはこのNSを見るでしょう。 235 00:12:18,000 --> 00:12:21,000 NSは実際にスティーブ·ジョブズ氏最初の企業の一つであった次のステップ、の略で、 236 00:12:21,000 --> 00:12:24,000 彼は本当に多くのコードを書き始めたところ、それはだ 237 00:12:24,000 --> 00:12:27,000 Mac OS Xやその他のもののすべての基礎のようなものとして、 238 00:12:27,000 --> 00:12:32,000 ので、このNSは、以前の会社の一つに、この素​​敵なレガシーの一種叫ぶれる 239 00:12:32,000 --> 00:12:34,000 背面Appleが最初に出始めていたとき。 240 00:12:34,000 --> 00:12:36,000 それはどこだ。 241 00:12:36,000 --> 00:12:41,000 のは、より包括的なObjective-Cの例を見てみましょう。 242 00:12:41,000 --> 00:12:44,000 ここで私はXcodeの内部です。 243 00:12:44,000 --> 00:12:47,000 ここまで来るのに、私は最初、App StoreからXCodeをダウンロード 244 00:12:47,000 --> 00:12:50,000 私は、ファイルにここに上がった後、それを開いて、 245 00:12:50,000 --> 00:12:54,000 こっちに新しいし、プロジェクトに。 246 00:12:54,000 --> 00:12:57,000 私は私が作りたいもののすべてのこれらのオプションを持っていることを実行した後、 247 00:12:57,000 --> 00:12:59,000 それで我々は、後でこれらのオプションを見てみましょう 248 00:12:59,000 --> 00:13:03,000 しかしちょうどこの例では、我々が実際にはまだアプリを持ってするつもりはないので、 249 00:13:03,000 --> 00:13:06,000 、私はここに来て、私はコマンドラインツールと述べ 250 00:13:06,000 --> 00:13:09,000 そしてこれは私がコマンドラインで実行できることアプリです 251 00:13:09,000 --> 00:13:12,000 我々は、Cから実行してきたのと同様 252 00:13:12,000 --> 00:13:16,000 、それは私がこのプロジェクトを作成した方法だし、今私はここにいるよ 253 00:13:16,000 --> 00:13:20,000 ので、このファイルの最初の一見してみましょう、これはかなり見覚えがあるはずです。 254 00:13:20,000 --> 00:13:24,000 私はint名前を持っています。私の友人のargc、argvは私の他の仲間がある。 255 00:13:24,000 --> 00:13:30,000 そして私たちは、これが私の最初のObjective-Cアプリケーションのエントリポイントであることがわかります。 256 00:13:30,000 --> 00:13:32,000 ここでは、今のところはこれを無視することができます。 257 00:13:32,000 --> 00:13:35,000 これは基本的にいくつかのメモリ管理のものであることをあなたは本当に意志 258 00:13:35,000 --> 00:13:37,000 これまで心配しなければならない。 259 00:13:37,000 --> 00:13:39,000 >> ここでは、この最初のブロックを見てみましょう。 260 00:13:39,000 --> 00:13:46,000 この最初の行は、私が学生と言うなら*アリス= [[学生のalloc] initは]何をやっているのですか? 261 00:13:46,000 --> 00:13:50,000 ここでは、この最初の学生は、これはおそらくクラスです。 262 00:13:50,000 --> 00:13:54,000 これは、Appleが書いたクラスではありませんが、それは私が書いたクラスです。 263 00:13:54,000 --> 00:13:57,000 私が最初にしたいことは、私は新しい学生のためのスペースを割り当てたいです 264 00:13:57,000 --> 00:14:00,000 そして私はそれを初期化したいので、これは私に戻って与える 265 00:14:00,000 --> 00:14:05,000 この新しい学生オブジェクト、と私はアリスと呼ばれる変数でこれを保管しています。 266 00:14:05,000 --> 00:14:07,000 そのクラスはどこから来たのか? 267 00:14:07,000 --> 00:14:12,000 さて、ここで上左側に、これらは私のプロジェクトの内部で異なるファイルのすべてです。 268 00:14:12,000 --> 00:14:16,000 我々は、私がStudent.hとStudent.mを持ってここに見ることができます。 269 00:14:16,000 --> 00:14:20,000 私は物事のすべてを宣言する場所。hファイルには、覚えておいてください 270 00:14:20,000 --> 00:14:22,000 それは、クラス内に存在します。 271 00:14:22,000 --> 00:14:25,000 >> のは、その見てみましょう。 272 00:14:25,000 --> 00:14:29,000 すべての権利、ここで私たちは、この@インタフェースを持って、これはここに来ていると言う 273 00:14:29,000 --> 00:14:33,000 私のクラス内に存在があれば、すべての宣言。 274 00:14:33,000 --> 00:14:36,000 それから私は、コロンを持っています。それから私はこのNSObjectのものを持っている。 275 00:14:36,000 --> 00:14:40,000 このコロンは、我々は少し前の議論していましたその継承ビットを意味します。 276 00:14:40,000 --> 00:14:43,000 これは、NSObjectを行うことができ、すべてを語る 277 00:14:43,000 --> 00:14:46,000 NSObjectは誰か他の人によって書かれたこのクラス、ここで 278 00:14:46,000 --> 00:14:50,000 私はそれを行うことができるようにしたいこれはNSObjectを行うことができますすべてを提供します。 279 00:14:50,000 --> 00:14:54,000 NSObjectのことを私は基本的に次のことを意味しますと言って、 280 00:14:54,000 --> 00:14:58,000 別のクラスのすべての機能を継承しています。 281 00:14:58,000 --> 00:15:02,000 それは本当に私が使用できるさまざまなメソッドやプロパティの全体の束を与えた。 282 00:15:02,000 --> 00:15:05,000 ダウンここで私は2つのプロパティを作成しています。 283 00:15:05,000 --> 00:15:08,000 これが構造体だったら私の学生を意味し、これらは2つのことであろう 284 00:15:08,000 --> 00:15:11,000 私の構造体の内部にあるため、すべての学生には名前があります 285 00:15:11,000 --> 00:15:14,000 、それが文字列であり、学生もグレードがあり 286 00:15:14,000 --> 00:15:17,000 これはintです。 287 00:15:17,000 --> 00:15:23,000 >> 最後に、ダウンここで私は私の学生のためのメソッドを作成するつもりです。 288 00:15:23,000 --> 00:15:26,000 、私はinitWithName、私の方法と呼ばれ、それは1つの引数を取り 289 00:15:26,000 --> 00:15:31,000 その引数は文字列であり、私はそれが名前を呼んだ。 290 00:15:31,000 --> 00:15:35,000 今、私たちは、実際にこのクラスを実装する方法を見てみましょう。 291 00:15:35,000 --> 00:15:38,000 ここでは、今私は、私のmファイルの内部だ 292 00:15:38,000 --> 00:15:40,000 実装のためのmは、私は推測する。 293 00:15:40,000 --> 00:15:44,000 私は私の実装では、私の最後を持っており、ここで私が実際に定義している場所である 294 00:15:44,000 --> 00:15:47,000 何initWithName。 295 00:15:47,000 --> 00:15:50,000 私はinitWithName、私のパラメータの名前を持っているし、この 296 00:15:50,000 --> 00:15:53,000 私は実際に学生が作成しているところであり、 297 00:15:53,000 --> 00:15:56,000 ので、これはちょっと謎めいていますが、これは決まり文句のようなものです 298 00:15:56,000 --> 00:15:58,000 あなたのコンストラクタに入れたい。 299 00:15:58,000 --> 00:16:02,000 ここでは、この初期化関数、initWithNameは、コンストラクタの一種です。 300 00:16:02,000 --> 00:16:05,000 基本的には新しい学生オブジェクトを構築している 301 00:16:05,000 --> 00:16:07,000 そして多分それの内のいくつかのデータを送信する。 302 00:16:07,000 --> 00:16:11,000 私が最初にしたいことは、私はこのスーパーの事にinitを呼び出したいです。 303 00:16:11,000 --> 00:16:15,000 >> 私はHファイルで、ここに戻って言ったときにそのことを覚えていてください 304 00:16:15,000 --> 00:16:21,000 そのすべてNSObjectは学生も持っています。 305 00:16:21,000 --> 00:16:24,000 私はまた何をすべきかの学生ですを作成したときにそれが意味 306 00:16:24,000 --> 00:16:28,000 私はからそのデータのすべてを継承していることにはNSObjectのことを確認してください。 307 00:16:28,000 --> 00:16:32,000 また、適切に初期化されます。 308 00:16:32,000 --> 00:16:36,000 私は何を言う必要があるが、このスーパーで実際に親クラスを参照するために起こっている 309 00:16:36,000 --> 00:16:39,000 私はから継承しているので、私は初期化を確認したいこと 310 00:16:39,000 --> 00:16:43,000 私はそれを使用しようとして開始する前に依存していることのすべて。 311 00:16:43,000 --> 00:16:46,000 それが正しく初期化されている場合、これは単にmallocの場合と言っているようです 312 00:16:46,000 --> 00:16:50,000 その後、私はいくつかのプロパティの設定を開始できるnullが返されませんでした。 313 00:16:50,000 --> 00:16:54,000 >> JavaScriptとPHPでは、このキーワードは、これを呼んでいた 314 00:16:54,000 --> 00:16:58,000 これはクラスの現在のインスタンスと呼ばれます。 315 00:16:58,000 --> 00:17:00,000 Objective-Cでは、我々は、この自己を呼び出します。 316 00:17:00,000 --> 00:17:04,000 私はself.nameを言うとき、それはつまり、オブジェクト 317 00:17:04,000 --> 00:17:07,000 私が学生のalloc initを言ったときに私が作成した、 318 00:17:07,000 --> 00:17:09,000 つまり、オブジェクトを私に背を向けるだろう。 319 00:17:09,000 --> 00:17:12,000 つまり、私は、そのオブジェクトの名前を設定したい 320 00:17:12,000 --> 00:17:15,000 私は渡されたものへ 321 00:17:15,000 --> 00:17:18,000 C言語で同じように、我々は、このドットでメンバにアクセスする 322 00:17:18,000 --> 00:17:21,000 そうself.nameは、学生·オブジェクトの名前を言う 323 00:17:21,000 --> 00:17:24,000 今、あなたはちょうど渡さどんなことを行っている 324 00:17:24,000 --> 00:17:28,000 私は実際に何かを得るようにし、そうついに、私はそれを返すことができます。 325 00:17:28,000 --> 00:17:30,000 >> 質問はありますか? 326 00:17:30,000 --> 00:17:34,000 さて、この自己=スーパーinitは、 327 00:17:34,000 --> 00:17:37,000 あなたが完全に継承のものを理解していない場合、心配しないでください。 328 00:17:37,000 --> 00:17:40,000 ただ知っているあなたは今まで自分のinitメソッドを作成する場合だけ 329 00:17:40,000 --> 00:17:42,000 それを行うと、あなたが行ってもいいでしょう。 330 00:17:42,000 --> 00:17:44,000 うん。>> [学生]自己意味する場合はどういう意味ですか? 331 00:17:44,000 --> 00:17:49,000 これが意味するときに我々は、malloc、それがnullに等しかった場合、我々は常に何かをチェックし、 332 00:17:49,000 --> 00:17:51,000 それがnullであった場合とし、我々は終了しました。 333 00:17:51,000 --> 00:17:55,000 このメソッドはnullを返した場合は、次に我々は、おそらくワンセグ障害になるだろうので、これは同じものです 334 00:17:55,000 --> 00:17:57,000 我々はそれを操作しようとし始めた場合。 335 00:17:57,000 --> 00:18:01,000 それが私たちの学生のクラスです。 336 00:18:01,000 --> 00:18:03,000 我々は2つ​​の方法のいずれかで私達の学生を初期化できることを意味します。 337 00:18:03,000 --> 00:18:08,000 私が学生のalloc initを言うならば、私は私がちょうど書いた、そのメソッドを使用していないよ、 338 00:18:08,000 --> 00:18:11,000 その代わりに私は単純に、alice.nameを言うことができる 339 00:18:11,000 --> 00:18:14,000 そして今、私は、そのプロパティ名を設定するつもりです。 340 00:18:14,000 --> 00:18:17,000 >> 同様に、私はそのinitWithNameメソッドを使用したい場合 341 00:18:17,000 --> 00:18:20,000 私は単にallocを言って、その後ではなく、initは言ってすることができます 342 00:18:20,000 --> 00:18:24,000 私が作成したばかりのそのメソッドを呼び出すつもりだ、と私はボブに渡すつもりです。 343 00:18:24,000 --> 00:18:30,000 この時点では、このオブジェクトボブはボブと同じ名前を持っています。 344 00:18:30,000 --> 00:18:35,000 さて、ここでダウンして私は、私たちが以前見たことがそのNSMutableArrayを使用しています。 345 00:18:35,000 --> 00:18:38,000 私は新しい配列を初期化していspace.Thenを割り当てています。 346 00:18:38,000 --> 00:18:40,000 私はそれに2つのものを追加するつもりです。 347 00:18:40,000 --> 00:18:43,000 この配列は、今や学生のオブジェクトを保持します。 348 00:18:43,000 --> 00:18:46,000 どこにも私は、これは学生の配列であると言わざるを得なかったことに注意してください。 349 00:18:46,000 --> 00:18:48,000 私はそれが配列、期間だと述べている。 350 00:18:48,000 --> 00:18:50,000 それから私は私がしたいこと、それの何でも内側に置くことができます。 351 00:18:50,000 --> 00:18:52,000 ここで私は2つのオブジェクトを持っています。 352 00:18:52,000 --> 00:18:56,000 >> 最後に、私は、ここでこのTFを別のオブジェクトを持っています。 353 00:18:56,000 --> 00:18:59,000 ここTF.hで上基本的には同じこと。 354 00:18:59,000 --> 00:19:01,000 私はNSObjectから継承し、ところでよ、 355 00:19:01,000 --> 00:19:03,000 あなたがクラスを作成するときに、これはすべてのあなたのために行われ、 356 00:19:03,000 --> 00:19:06,000 インターフェースの決まり文句のこの種。 357 00:19:06,000 --> 00:19:08,000 それは学生のプロパティを持っています。 358 00:19:08,000 --> 00:19:15,000 私は、本当に全体の多くを行うことはありませんここにカップルのメソッドを持っています 359 00:19:15,000 --> 00:19:18,000 ので、私はこのTFオブジェクトを作成した後、つまり、 360 00:19:18,000 --> 00:19:23,000 私はこのように上でこのメソッドグレードを呼び出すことができます。 361 00:19:23,000 --> 00:19:26,000 我々はいくつかの詳細に移動を開始する前に、Objective-Cの構文上の任意の質問 362 00:19:26,000 --> 00:19:30,000 面白いアプリ開発のもの? 363 00:19:30,000 --> 00:19:34,000 >> さて、実際にiPhoneアプリを作ってみましょう。 364 00:19:34,000 --> 00:19:39,000 あなたのiPhoneアプリの内部で使用されるだろうとコアクラスは、ビューコントローラと呼ばれ 365 00:19:39,000 --> 00:19:42,000 とビューコントローラは、基本的に単一の画面を表します 366 00:19:42,000 --> 00:19:46,000 あなたのアプリの中にいるので、私は、例えば、音楽のアプリを利用している場合 367 00:19:46,000 --> 00:19:50,000 つのビューコントローラは、私は私のiPhone上のすべての曲を表示するビューを表すことができます。 368 00:19:50,000 --> 00:19:53,000 私はこの曲をクリックして、再生を開始するときに、別のビューコントローラは次のようになります。 369 00:19:53,000 --> 00:19:55,000 または私はアーティストにドリルダウンしているとして。 370 00:19:55,000 --> 00:19:59,000 それらの異なる画面の各々は、異なるビューコントローラのように表すことができ 371 00:19:59,000 --> 00:20:04,000 とビューコントローラは本当にこの画面がどのように動作するかと言うだけのクラスです。 372 00:20:04,000 --> 00:20:07,000 ビューコントローラの内部の事は、我々は、プロパティを持っているつもりです 373 00:20:07,000 --> 00:20:10,000 ので、ボタンのようなものが私たちのビューコントローラのプロパティであることを行っている。 374 00:20:10,000 --> 00:20:13,000 >> 我々はまた、メソッドを持っているつもりです、そして、これらは基本的にイベントハンドラです。 375 00:20:13,000 --> 00:20:16,000 この方法では、このボタンを押したときに言う 376 00:20:16,000 --> 00:20:19,000 私は、何かをしたい、そして最後に、再び 377 00:20:19,000 --> 00:20:24,000 我々は、現在のインスタンスにアクセスするには、この自己キーワードを使用することになるだろう。 378 00:20:24,000 --> 00:20:29,000 iOSでインターフェイスを構築するためには、実際には、本当に簡単です。 379 00:20:29,000 --> 00:20:32,000 彼らは、Interface Builderで呼ばれるこの素敵なドラッグアンドドロップインターフェイスを持っている 380 00:20:32,000 --> 00:20:37,000 Interface BuilderはにあなたのObjective-Cの上昇と2コアの概念、そのワイヤ 381 00:20:37,000 --> 00:20:40,000 IBOutletとIBActionはされています。 382 00:20:40,000 --> 00:20:44,000 IBOutletは単に、あなたがボタンのプロパティを宣言した場合と言う 383 00:20:44,000 --> 00:20:47,000 そしてあなたは、あなたの実際のUIで何かにそれをフックしたい 384 00:20:47,000 --> 00:20:49,000 あなたはそれが出口だと言うつもりです。 385 00:20:49,000 --> 00:20:51,000 同様に、イベントハンドラを表したいと思えば 386 00:20:51,000 --> 00:20:54,000 あなたはそれがアクションだと言うつもりです。 387 00:20:54,000 --> 00:20:57,000 >> 実際にこのグラフィカルな表現の配線を行うには 388 00:20:57,000 --> 00:21:00,000 あなたのコードは、それは本当に、本当に簡単です。 389 00:21:00,000 --> 00:21:03,000 あなたはIBOutletを添付したい場合は、あなたがしなければならないすべては、あなたがクリックを制御で 390 00:21:03,000 --> 00:21:05,000 そして我々はこれは本当に速いの例を紹介します。 391 00:21:05,000 --> 00:21:07,000 ビューコントローラがそれを言うところには、クリックを制御します。 392 00:21:07,000 --> 00:21:09,000 あなたは、逆にインターフェースにドラッグするか、またはしようとしている 393 00:21:09,000 --> 00:21:13,000 あなたがイベントハンドラをフックしたい場合は、インタフェースからドラッグしようとしている 394 00:21:13,000 --> 00:21:15,000 他の方向に。 395 00:21:15,000 --> 00:21:20,000 のは本当に簡単なiOSの例を見てみましょう。 396 00:21:20,000 --> 00:21:23,000 >> 新しいプロジェクトを作成してみましょう。 397 00:21:23,000 --> 00:21:25,000 私は、アプリケーションへのここまで来るつもりです 398 00:21:25,000 --> 00:21:28,000 と私は、シングルビューアプリケーション]をクリックするつもりです。 399 00:21:28,000 --> 00:21:31,000 私は次のクリックするつもりです。私は自分のプロジェクト名を与えるでしょう。 400 00:21:31,000 --> 00:21:33,000 私はこんにちは、それを呼ぶことにします。 401 00:21:33,000 --> 00:21:36,000 興味深いことに、Appleは、製品を作成することを想定してい 402 00:21:36,000 --> 00:21:38,000 あなたはそれを販売することができ、彼らはお金を稼ぐことができるようにします。 403 00:21:38,000 --> 00:21:41,000 ダウンここで私は、これはiPhoneアプリであると言うつもりです。 404 00:21:41,000 --> 00:21:44,000 あなたがiPadアプリを作成したり、それらのアプリケーションのいずれかを作成したい場合 405 00:21:44,000 --> 00:21:47,000 それはあなたもそれを行うことができます両方のデバイスをサポートします。 406 00:21:47,000 --> 00:21:49,000 これらはあなたがあなたのチェックマークが見えるように何をしたいです。 407 00:21:49,000 --> 00:21:51,000 >> あなたは、私たちが後で見るストーリーボードを使用したい 408 00:21:51,000 --> 00:21:54,000 とあなたは間違いなく、参照カウントを自動的に使用したい 409 00:21:54,000 --> 00:21:58,000 これはmallocとfreeと言うする必要がなくなり便利な機能です。 410 00:21:58,000 --> 00:22:03,000 あなたはmallocとfree呼び出したい場合を除き、私はこのチェックしたままにしておきます。 411 00:22:03,000 --> 00:22:07,000 私は、次をクリックします、そして最後に、これは私がそれを保存する場所を尋ねるために起こっている。 412 00:22:07,000 --> 00:22:14,000 私が作成を打つだろうし、ここに私達は行く。 413 00:22:14,000 --> 00:22:16,000 私は、新しいプロジェクトを作成しました。 414 00:22:16,000 --> 00:22:19,000 ここで左の上で、私のプロジェクトの中にあるすべてのファイルであり、 415 00:22:19,000 --> 00:22:22,000 と私は全体の束を持って、私も何もしなかったことに気づく。 416 00:22:22,000 --> 00:22:24,000 IOSは素晴らしいです。 417 00:22:24,000 --> 00:22:27,000 >> たとえば、ここにこのViewController.h、 418 00:22:27,000 --> 00:22:30,000 これが私の最初のビューコントローラを表すために起こっている、 419 00:22:30,000 --> 00:22:32,000 私のアプリの内の最初の画面がそう。 420 00:22:32,000 --> 00:22:34,000 今、私たちは、これが言っていることを知っています。 421 00:22:34,000 --> 00:22:36,000 我々は、私はこのクラスのViewControllerを呼んでいると言っている 422 00:22:36,000 --> 00:22:40,000 とViewControllerは、のUIViewControllerが行うことすべてを行う 423 00:22:40,000 --> 00:22:43,000 これは、再び、Appleが私たちのために便利な多くのものを行うことを書いたいくつかのクラスです 424 00:22:43,000 --> 00:22:46,000 画面を表示したい。 425 00:22:46,000 --> 00:22:50,000 私は実際に私のビューコントローラが何をするかの定義を開始することができますのはここですが、 426 00:22:50,000 --> 00:22:52,000 そしてそれは私が本当にこのいずれかを必要としないことが判明した。 427 00:22:52,000 --> 00:22:55,000 これは、Appleが無料で私を与える定型コードです。 428 00:22:55,000 --> 00:22:59,000 、私はその最初の行を必要としたか、私はクラスを持っていない 429 00:22:59,000 --> 00:23:02,000 ので、我々はそれを取り除くと、これを取り除くことができます。 430 00:23:02,000 --> 00:23:05,000 わかりましたので、これは私の空の画面です。 431 00:23:05,000 --> 00:23:08,000 >> さて、このMainStoryboard.storyboardをクリックしてみましょう 432 00:23:08,000 --> 00:23:11,000 それが面白くなって始めるところ、これはです。 433 00:23:11,000 --> 00:23:14,000 これは私のアプリの最初の画面を表します。 434 00:23:14,000 --> 00:23:17,000 私はボタンを追加したい場合は、HTMLで私はbuttonタグを作成する必要がありました。 435 00:23:17,000 --> 00:23:20,000 Androidには、buttonタグを作成する必要があります 436 00:23:20,000 --> 00:23:23,000 しかしiOSで私はちょうど右下にここに降りてくる場合 437 00:23:23,000 --> 00:23:27,000 私はここで、この第三のものをクリックした場合、それは、オブジェクトの言うところ 438 00:23:27,000 --> 00:23:31,000 と私は、下にスクロールしたり、私はボタンの検索を開始することができます。 439 00:23:31,000 --> 00:23:35,000 そして、私は実際にそこにこの権利をドラッグ·アンド·ドロップするので、もし、ボタンを見て 440 00:23:35,000 --> 00:23:38,000 私はちょうど私のアプリにこの画面にボタンを追加しました。 441 00:23:38,000 --> 00:23:41,000 私は、テキストを変更したい場合は、私は二重、それをクリックすることができます 442 00:23:41,000 --> 00:23:47,000 何かのように誘導言う "私を押してください。" 443 00:23:47,000 --> 00:23:51,000 さて、私はこのアプリを実行した場合、我々はそれをコンパイルし、 444 00:23:51,000 --> 00:23:54,000 ので、それを実行するために、私は左上の再生ボタンをクリックして、私のアプリがあります。 445 00:23:54,000 --> 00:23:58,000 私は何もしませんでした、と私は甘い見てiPhoneアプリを持って。 446 00:23:58,000 --> 00:24:01,000 私はそれを停止したい場合は、停止ボタンをクリックすることができます 447 00:24:01,000 --> 00:24:03,000 それはより多くの楽しみだから。 448 00:24:03,000 --> 00:24:07,000 >> 私は実際に私は、このボタンを押したときの動作に何かをしたいと言ってみましょう。 449 00:24:07,000 --> 00:24:09,000 私は何をする必要があることを行うために私が作成する必要があります 450 00:24:09,000 --> 00:24:13,000 新しいイベントハンドラまたはアクション。 451 00:24:13,000 --> 00:24:16,000 それは私が私が呼ばれるようにしているいくつかのメソッドを作成する必要があることを意味 452 00:24:16,000 --> 00:24:18,000 私はボタンを押したときに、それでは、新しいメソッドを作ってみましょう。 453 00:24:18,000 --> 00:24:20,000 私はViewController.hの内側だ。 454 00:24:20,000 --> 00:24:22,000 私は、メソッドが存在することを表明する必要があります。 455 00:24:22,000 --> 00:24:26,000 私は、ビューコントローラでこれを呼び出すことにするつもりですので、私は最初のハイフンが必要です。 456 00:24:26,000 --> 00:24:28,000 私はこれに型を与える必要があります。 457 00:24:28,000 --> 00:24:31,000 このタイプのは、我々が以前に見たことIBActionの事になるだろう。 458 00:24:31,000 --> 00:24:35,000 これは、イベントハンドラなので、IBActionを返すために起こっている 459 00:24:35,000 --> 00:24:38,000 これがあることを言うためにXCodeにヒントです 460 00:24:38,000 --> 00:24:40,000 これは私が何かを配線したいものです。 461 00:24:40,000 --> 00:24:45,000 私はそれをbuttonPressed、セミコロンのような名前を付けることができます。 462 00:24:45,000 --> 00:24:48,000 >> さて、私のクラスの内に新しいメソッドを宣言した。 463 00:24:48,000 --> 00:24:50,000 私は、このメソッドが存在している必要がありますと言ってきました。 464 00:24:50,000 --> 00:24:53,000 さて、ViewController.mに来てみましょう 465 00:24:53,000 --> 00:24:56,000 そして、このメソッドは何ができるかと言うてみましょう。 466 00:24:56,000 --> 00:25:03,000 私が入力を開始する場合は、例えば、(void)をbuttonPressed 467 00:25:03,000 --> 00:25:06,000 予告XCodeのは本当にいいですし、私のために自動的に補完します。 468 00:25:06,000 --> 00:25:09,000 それは本当に素晴らしいです。 469 00:25:09,000 --> 00:25:12,000 mファイルの内部は私もvoidを言うことができるここで注意してください、 470 00:25:12,000 --> 00:25:15,000 そのIBActionは、実際にタイプではないので、これはです。 471 00:25:15,000 --> 00:25:19,000 それは、実際には、無効とするためにどこかに定義されているハッシュタグ 472 00:25:19,000 --> 00:25:22,000 そして、再び、これはちょうど言うXCodeにヒントです 473 00:25:22,000 --> 00:25:25,000 私はこれがイベントハンドラになりたい、と理由だけで第二で我々が表示されます。 474 00:25:25,000 --> 00:25:28,000 このボタンが押されたときに私は迷惑な何かをするつもりだ 475 00:25:28,000 --> 00:25:30,000 ポップアップを表示するように。 476 00:25:30,000 --> 00:25:35,000 >> 私はUIAlertViewと呼ばれるこのクラスの新しいインスタンスを作成することができることを行うには、 477 00:25:35,000 --> 00:25:39,000 これはAppleが迷惑なポップアップを表示するように起こっていることを書いたクラスです。 478 00:25:39,000 --> 00:25:43,000 我々は、このポップアップアラートを呼ぶことにします、そして、私は2つのステップを持って、このオブジェクトを作成するには、覚えています。 479 00:25:43,000 --> 00:25:46,000 私が最初にすべきことは、領域は割り当てられています。 480 00:25:46,000 --> 00:25:48,000 私はUIAlertViewをしたい。 481 00:25:48,000 --> 00:25:51,000 私はスペースを割り振りたい。それが私の第一の方法です。 482 00:25:51,000 --> 00:25:53,000 私の次の方法は、私がそれを初期化したいです 483 00:25:53,000 --> 00:25:58,000 そして私はinitWithTitle呼ばれるこの大きな、長いメソッドを持っています。 484 00:25:58,000 --> 00:26:01,000 それは基本的にこのポップアップが何を言うか制御するために起こっている。 485 00:26:01,000 --> 00:26:04,000 私のポップアップのタイトルはhelloすることができます。 486 00:26:04,000 --> 00:26:08,000 このポップアップのメッセージができる "これはiOSのである。" 487 00:26:08,000 --> 00:26:10,000 デリゲートの事は、私はそれが何であるかを知らない。 488 00:26:10,000 --> 00:26:13,000 レッツは、それの何も言わない。 489 00:26:13,000 --> 00:26:18,000 今すぐ表示されるように起こっているボタンは、 "それは確かです"のような何かを言うことができる 490 00:26:18,000 --> 00:26:24,000 と私は本当に他のボタンはしたくないので、それを削除して、ブラケットを閉じてみましょう。 491 00:26:24,000 --> 00:26:27,000 >> さて、私は余分なものを作成しました。そうしよう。 492 00:26:27,000 --> 00:26:30,000 これは、私が新しいポップアップを作成することができる方法です。 493 00:26:30,000 --> 00:26:35,000 私は実際にポップアップを表示したい場合、私はshowメソッドを呼び出す必要があります。 494 00:26:35,000 --> 00:26:38,000 私は警告してショーを言うことができますこれを行うには、 495 00:26:38,000 --> 00:26:40,000 そして再び、オートコンプリートは超よかったよ。 496 00:26:40,000 --> 00:26:42,000 私はちょうどsで入力した場合それは、何だったか忘れてしまった場合は、 497 00:26:42,000 --> 00:26:45,000 私は、それが何であったかを把握するにはここをスクロールすることができます 498 00:26:45,000 --> 00:26:48,000 そして、それはうまくフィルタリングします。 499 00:26:48,000 --> 00:26:52,000 今私はこの新しいポップアップを作成しました。 500 00:26:52,000 --> 00:26:55,000 我々は、後でデリゲートが何を意味するかに戻ってくる 501 00:26:55,000 --> 00:26:58,000 そして今、私はこの方法が発射されるようにすると言いたい 502 00:26:58,000 --> 00:27:01,000 私はボタンを押したときに、私は私のストーリーボードに戻ってくるつもりです、 503 00:27:01,000 --> 00:27:04,000 そして私は今、このIBActionを接続したい。 504 00:27:04,000 --> 00:27:06,000 あなたが最初にしたいことは、ボタンをクリックするだけです。 505 00:27:06,000 --> 00:27:08,000 私は、このボタンを押したときに何が起こるために何かをしたい。 506 00:27:08,000 --> 00:27:10,000 私は、コントロールを押したままにするつもりはない。 507 00:27:10,000 --> 00:27:13,000 私はクリックして、ボタンからドラッグするつもりです 508 00:27:13,000 --> 00:27:15,000 ここ以上の場所にそれはView Controllerを言う。 509 00:27:15,000 --> 00:27:17,000 我々は、それがうまく点灯していることがわかります。 510 00:27:17,000 --> 00:27:22,000 >> 私はマウスを使って行かせている場合、私はいくつかのオプションを持っているここで私は今ここにの上でこのポップアップを持っています。 511 00:27:22,000 --> 00:27:24,000 これらの一つは、私が登録できるイベントです。 512 00:27:24,000 --> 00:27:28,000 これらは、私がIBActionsとしての私のhファイルで宣言されているすべてのメソッドです。 513 00:27:28,000 --> 00:27:31,000 これは、Xcodeはこの小さなリストに表示されるべきかを知る方法です 514 00:27:31,000 --> 00:27:33,000 ので、それはただのヒントだ。 515 00:27:33,000 --> 00:27:37,000 私は押されたボタンをクリックすると、私は今、イベントハンドラを登録した。 516 00:27:37,000 --> 00:27:41,000 JavaScriptでは、私たちは、私がイベントハンドラを登録したいくつかのコードを持って言っていた。 517 00:27:41,000 --> 00:27:43,000 Objective-Cでそれは本当に簡単でした。 518 00:27:43,000 --> 00:27:46,000 私は再びこれを実行した場合 519 00:27:46,000 --> 00:27:49,000 今私がボタンを押したときに私のイベントハンドラが起動するように起こっている、 520 00:27:49,000 --> 00:27:51,000 と私は、このポップアップを取得するつもりです。 521 00:27:51,000 --> 00:27:54,000 そこにスーパー、超簡単。 522 00:27:54,000 --> 00:27:57,000 >> あなたは今までに登録されるために起こるすべてのイベントを見たい場合 523 00:27:57,000 --> 00:28:00,000 コンポーネント上で私は、このボタンをクリックした場合 524 00:28:00,000 --> 00:28:02,000 と私は右側にここに来て 525 00:28:02,000 --> 00:28:05,000 まず、上見ることができ、ここで私は、ボタンの種類のようなものを行うことができます 526 00:28:05,000 --> 00:28:08,000 あなたはそれらの私の、または連絡先の追加]ボタンのいずれかをお望みであれば 527 00:28:08,000 --> 00:28:10,000 または何でも。 528 00:28:10,000 --> 00:28:13,000 私は、このボタン上にあるすべてのイベントを見たい場合 529 00:28:13,000 --> 00:28:16,000 私はこっちの右側にすべての道を歩んでいる場合 530 00:28:16,000 --> 00:28:19,000 我々は、私は、これらのさまざまなイベントのすべてを持っているイベントで、ここで見ることができます。 531 00:28:19,000 --> 00:28:23,000 私は、ボタンから指を離したとき、私はときに私はダブルタップまたはものは何でも、、、ボタンを押すことができます 532 00:28:23,000 --> 00:28:26,000 そして私はちょうど登録したものは、内部にタッチアップと呼ばれるこのイベントです 533 00:28:26,000 --> 00:28:29,000 そして、これはできるだけ早く私の指がボタンをオフに来るようにと言っている 534 00:28:29,000 --> 00:28:32,000 そのイベントは発生しようとしている、そしてそれはちょうど何が起こったかを正確です。 535 00:28:32,000 --> 00:28:36,000 これは、デフォルトのボタンが押されたイベントの一種である。 536 00:28:36,000 --> 00:28:39,000 >> これまでに何か質問はありますか? 537 00:28:39,000 --> 00:28:43,000 さて、それは我々が我々のコードで物事をつなぎ合わせるために始めることができる方法です 538 00:28:43,000 --> 00:28:46,000 私たちのインターフェイスの内側の事に。 539 00:28:46,000 --> 00:28:49,000 我々がしなければならなかった最初の事は、コードを見つけることだった覚えている 540 00:28:49,000 --> 00:28:54,000 それから私達は、コードのインターフェイスを有線 541 00:28:54,000 --> 00:28:57,000 と我々の最初のアプリがあります。 542 00:28:57,000 --> 00:29:00,000 さて、それは本当にクールだった、そして我々は、このボタンを作成しました。 543 00:29:00,000 --> 00:29:03,000 我々は、プロパティの束を作成する必要がしたくない場合はどうすればよい 544 00:29:03,000 --> 00:29:05,000 これらのボタンを表す? 545 00:29:05,000 --> 00:29:08,000 たとえば、Tic Tac Toeので、私は9のボタンを持って、 546 00:29:08,000 --> 00:29:11,000 そしてそれは9回をドラッグ·アンド·ドロップしなければならないのスーパー、スーパー迷惑になるだろう 547 00:29:11,000 --> 00:29:14,000 または私は81の代わりに、9でTic Tac Toeのをしなければならなかった場合 548 00:29:14,000 --> 00:29:17,000 そして、私は81回ドラッグ·アンド·ドロップしなければならなかった、そしてそれはラメだ。 549 00:29:17,000 --> 00:29:20,000 我々が代わりに出来ることは、はるかにHTMLのようなものです 550 00:29:20,000 --> 00:29:23,000 私たちは、IDと名前のようなものを持っていたし、我々は物事を検索することができたとき 551 00:29:23,000 --> 00:29:27,000 そのIDで、タグと呼ばれるiOSで同じような概念があります。 552 00:29:27,000 --> 00:29:31,000 >> タグは、単にコンポーネントの一意の数値識別子です。 553 00:29:31,000 --> 00:29:34,000 私はこれが0のタグを持っていると言うならば、例えば、 554 00:29:34,000 --> 00:29:38,000 私は、ボタンを作成し、それに0のタグを付け、私達はちょうど第二にそれを行う方法を紹介しましょう​​場合、 555 00:29:38,000 --> 00:29:41,000 私はそのボタンを取得したい場合、私は単に私が呼びたいと言うことができます 556 00:29:41,000 --> 00:29:45,000 ここでオブジェクトのメソッドをviewWithTag、 557 00:29:45,000 --> 00:29:48,000 例えば、現在の画面を表しself.view、。 558 00:29:48,000 --> 00:29:53,000 私はそのviewWithTagメソッドを呼び出した場合、私はタグ0のボタンを引き戻すつもりです。 559 00:29:53,000 --> 00:29:58,000 のは、Tic Tac Toeのを構築することにより、これを見てみましょう。 560 00:29:58,000 --> 00:30:01,000 まず、これは私の絵コンテです。 561 00:30:01,000 --> 00:30:05,000 私は、これらの10のUIボタンを作成しました。 562 00:30:05,000 --> 00:30:07,000 それらはすべて同じサイズだ注意してください。 563 00:30:07,000 --> 00:30:11,000 私はこれらのいずれかをクリックして、私はこの右側にこっちに戻ってくる場合 564 00:30:11,000 --> 00:30:15,000 あなたは、私はここのフォントを調整するので、私は少し大きいフォントを作ってくださいよ 565 00:30:15,000 --> 00:30:19,000 私はまた何をしたかは、私は、このタグを設定していた。 566 00:30:19,000 --> 00:30:23,000 私はこれが1のタグを持っていると述べ、それは左上です。 567 00:30:23,000 --> 00:30:26,000 >> 今、私はここでこの第1のように、別のボタンをクリックした場合、 568 00:30:26,000 --> 00:30:29,000 今、あなたは私のタグが2であることがわかります。 569 00:30:29,000 --> 00:30:32,000 これらの各ボタンは、単にユニークなタグを持って、 570 00:30:32,000 --> 00:30:35,000 ので、これは私が対話を開始するつもりですどのよ​​うに後である 571 00:30:35,000 --> 00:30:38,000 私のアプリでは。 572 00:30:38,000 --> 00:30:40,000 これにより、1つのビューコントローラのすべての内部です 573 00:30:40,000 --> 00:30:42,000 しかし、ここで我々が​​持っているものです。 574 00:30:42,000 --> 00:30:44,000 我々はここで3つのプロパティを持っています。 575 00:30:44,000 --> 00:30:49,000 最初のものと最後のものは私のボードの状態を表すとしている。 576 00:30:49,000 --> 00:30:53,000 基本的に、この最初のものは、XSとOsがどこにあるかを表す配列です。 577 00:30:53,000 --> 00:30:57,000 このもう一つは、ここにそのターンそれは教えてくれる。 578 00:30:57,000 --> 00:31:01,000 あなたは、私はまたここにこれらのものを持っていることに気づくでしょう。 579 00:31:01,000 --> 00:31:05,000 前に我々は、プロパティを宣言したときに我々は彼らの名前と型を与えた。 580 00:31:05,000 --> 00:31:08,000 また、ここで、それらにいくつかの追加情報を与えることができます。 581 00:31:08,000 --> 00:31:11,000 これは、最初のアトミック言って、これが何を言う 582 00:31:11,000 --> 00:31:16,000 基本的にはただ一つのことは、今までに、随時、この変数にアクセスしようとされています。 583 00:31:16,000 --> 00:31:19,000 あなたは、マルチスレッド化され、より複雑なアプリケーションを行うことができます 584 00:31:19,000 --> 00:31:22,000 などバックスクラッチで我々は、異なるスレッドを持っていた 585 00:31:22,000 --> 00:31:25,000 と異なるスプライトを同時に違うことをやっている可能性があります。 586 00:31:25,000 --> 00:31:29,000 >> それはそれは私たちが見ることになりますことは何に含まれていない場合、ない場合 587 00:31:29,000 --> 00:31:33,000 我々はアトミックと言う場合、それは実際に物事が少し速くするために起こっている。 588 00:31:33,000 --> 00:31:37,000 我々はまた、アサイン強い、または弱いと呼ばれるこの事を持っている。 589 00:31:37,000 --> 00:31:40,000 この割り当ては、ちょうどこれは標準的なタイプであることを述べています。 590 00:31:40,000 --> 00:31:43,000 これは単にboolですので、これは、オブジェクトやポインタではありません 591 00:31:43,000 --> 00:31:46,000 そうboolはObjective-Cのに組み込まれています。 592 00:31:46,000 --> 00:31:49,000 これはここにポインタを持つファンシー何もしようとしないと言います。 593 00:31:49,000 --> 00:31:51,000 これは、定期的に古いスケーラーです。 594 00:31:51,000 --> 00:31:54,000 強者と弱者、これは実際に弱いと言う 595 00:31:54,000 --> 00:31:57,000 私は、これはビューコントローラの中で何かを指しているしたいと思います。 596 00:31:57,000 --> 00:32:00,000 私は実際に自分自身を割り当てるか、またはこれをinitにするつもりはない。 597 00:32:00,000 --> 00:32:04,000 Interface Builderは、私は、アプリを実行すると、すべてが初期化を処理しようとしている。 598 00:32:04,000 --> 00:32:07,000 私は弱いと言うなら、それは他の誰かがこれを作​​成しようとしていると言います。 599 00:32:07,000 --> 00:32:09,000 私は強いと言えば、これは私が1になるんだと言っている 600 00:32:09,000 --> 00:32:12,000 このボードオブジェクトを作成していること、 601 00:32:12,000 --> 00:32:14,000 ので、ここで私は、ここでいくつかのより多くのメソッドを持っています 602 00:32:14,000 --> 00:32:18,000 例えば、新しいゲームのボタンが押されたときのアクション、 603 00:32:18,000 --> 00:32:20,000 他のいずれかのボタンが押されたときのアクション、 604 00:32:20,000 --> 00:32:23,000 とエトセトラ。 605 00:32:23,000 --> 00:32:26,000 >> 我々は、チックタックつま先のロジックのあまりに取得することはありません 606 00:32:26,000 --> 00:32:30,000 それは非常にエキサイティングだが、みましょうを見てみるものの、 607 00:32:30,000 --> 00:32:33,000 我々はiOSの内部にできることの一部。 608 00:32:33,000 --> 00:32:35,000 この新しいゲーム方式は、解雇されようとしている 609 00:32:35,000 --> 00:32:37,000 たびに私は新しいゲームのボタンを押してください。 610 00:32:37,000 --> 00:32:41,000 まで、私は単に私のストーリーボードに来ているフックに。 611 00:32:41,000 --> 00:32:43,000 私は新しいゲームをクリックしました。 612 00:32:43,000 --> 00:32:47,000 私は右にここに来た場合、私はそれを見ることができます 613 00:32:47,000 --> 00:32:50,000 newGame方法に配線されて内部に触れないでください。 614 00:32:50,000 --> 00:32:53,000 これはクビにしようとしている理由です。 615 00:32:53,000 --> 00:32:56,000 newGameメソッドは、いくつかのセットアップを行うとしている。 616 00:32:56,000 --> 00:32:59,000 それは、私はあなたがボードの状態をクリアしたいと言うだろう。 617 00:32:59,000 --> 00:33:01,000 これは、変更可能な配列の素敵な方法です。 618 00:33:01,000 --> 00:33:03,000 これは、今ではXの番だと言うことが起こっている 619 00:33:03,000 --> 00:33:07,000 そして今、私はこのviewWithTag事を活用するつもりです。 620 00:33:07,000 --> 00:33:11,000 >> 私は、私のボタンは1月9日タグを持っていることを知って 621 00:33:11,000 --> 00:33:13,000 そしてそれは私が勝手に選んだものです。 622 00:33:13,000 --> 00:33:15,000 私は空のように各ボタンのテキストを設定したい場合 623 00:33:15,000 --> 00:33:17,000 私はちょうど新しいゲームを始めたと私は何をしたくないので、 624 00:33:17,000 --> 00:33:20,000 私はこれを行うことができます上に残すことへのXSまたはOs。 625 00:33:20,000 --> 00:33:24,000 私はタグ付きのビュー、1、2、3、4エトセトラをしたいと言うことができます。 626 00:33:24,000 --> 00:33:27,000 これは、別のボタンを毎回引っ張ってくる。 627 00:33:27,000 --> 00:33:30,000 ここで私はUIButtonにキャストするつもりです。 628 00:33:30,000 --> 00:33:33,000 私たちは、山車とその逆にintを唱えられるのと同じように 629 00:33:33,000 --> 00:33:37,000 これは私がUIButtonにこれをキャストしたいと言っています。 630 00:33:37,000 --> 00:33:40,000 つまり、これの型はUIButtonの*となります 631 00:33:40,000 --> 00:33:43,000 ポインタのためですが、心配しないで、彼らはもう怖くないよ。 632 00:33:43,000 --> 00:33:47,000 >> かつて私は、私はそれにメソッドを呼び出すつもりだ、このボタンを持っています。 633 00:33:47,000 --> 00:33:50,000 このメソッドは、上余白forStateと呼ばれ、ので、これは言っている 634 00:33:50,000 --> 00:33:53,000 私は、空の文字列になるようにボタンのテキストを設定したい 635 00:33:53,000 --> 00:33:57,000 そして私はそれが押されていない空の文字列になりたい。 636 00:33:57,000 --> 00:34:01,000 私はこの方法を使用するならば、私はボタンのテキストを変更することができます 637 00:34:01,000 --> 00:34:04,000 誰かがそれに当たるが、我々はボタンはただそこに座っているときに言いたいとすぐに 638 00:34:04,000 --> 00:34:07,000 私はテキストが空白になりたい。 639 00:34:07,000 --> 00:34:10,000 最後に、我々は、私のボードを初期化しようとしている 640 00:34:10,000 --> 00:34:12,000 と私は、すべてが0に現在表示されていると言うつもりです 641 00:34:12,000 --> 00:34:15,000 このようにボードメンバーは不変、可変配列です 642 00:34:15,000 --> 00:34:21,000 これは私がaddObjectメソッド、それのちょうど0内部を呼び出すことができますを意味します。 643 00:34:21,000 --> 00:34:23,000 それは私が新しいゲームを作成したときに起こることです。 644 00:34:23,000 --> 00:34:25,000 >> のは、別の1つを見てみましょう。 645 00:34:25,000 --> 00:34:28,000 ここでは、このメソッドは、押されたことになるだろうIBActionです 646 00:34:28,000 --> 00:34:31,000 これらの四角のたびに1が押されています。 647 00:34:31,000 --> 00:34:33,000 今、私たちは、ここでいくつかのTic Tac Toeのロジックを持っている。 648 00:34:33,000 --> 00:34:36,000 我々は、そのターンそれが把握 649 00:34:36,000 --> 00:34:39,000 そして、我々は、XまたはOを設定し、それに基づい 650 00:34:39,000 --> 00:34:43,000 しかし、我々は、我々はこの同じイベントハンドラを再利用していることに気付く 651 00:34:43,000 --> 00:34:45,000 これらのボタンのひとつひとつの1のために。 652 00:34:45,000 --> 00:34:49,000 私は左上のボタンのための方法を持っていないことを意味し、 653 00:34:49,000 --> 00:34:52,000 私はそれを行うことができる持っているが、右下のボタンに別の方法。 654 00:34:52,000 --> 00:34:54,000 それは本当に良いデザインではないでしょう。 655 00:34:54,000 --> 00:34:57,000 私がここでやっていることは私が実際に決定するつもりである 656 00:34:57,000 --> 00:35:00,000 押されたボタンのタグは何ですか。 657 00:35:00,000 --> 00:35:04,000 このplayメソッドは、1つの引数を取ることに注意してください。 658 00:35:04,000 --> 00:35:07,000 それは、送付者と呼ばれている、と何送信者が送信者はに起こっているされている 659 00:35:07,000 --> 00:35:10,000 際に行動をとったかを正確に表しています。 660 00:35:10,000 --> 00:35:15,000 私はボタンを押した場合、その送信者はそのUIButtonになるだろう 661 00:35:15,000 --> 00:35:18,000 私が実際に押されているので、ことはつまり、そのUIButton 662 00:35:18,000 --> 00:35:20,000 私はタグを作成したので、タグを持っています。 663 00:35:20,000 --> 00:35:23,000 >> 私はタグを取りたいのであれば、私は単純に言うことができる 664 00:35:23,000 --> 00:35:26,000 私は、送信者のタグが欲しい 665 00:35:26,000 --> 00:35:28,000 そして再び、私はちょうどUIButtonにそれをキャストしました。 666 00:35:28,000 --> 00:35:32,000 私は、送信者がUIButtonになることを知っているに起こる。 667 00:35:32,000 --> 00:35:34,000 それは、常にUIButtonである必要はありません。 668 00:35:34,000 --> 00:35:36,000 私は、例えば、同じイベントハンドラを登録することができます 669 00:35:36,000 --> 00:35:38,000  ボタン、スライダの1対1のために。 670 00:35:38,000 --> 00:35:40,000 このケースでは、私は、彼らはすべてのボタンにしている知っているので、私は言うつもりです 671 00:35:40,000 --> 00:35:43,000 私は、これはボタンになりたいし、私は、タグを取得することができます 672 00:35:43,000 --> 00:35:48,000 とタグから私は今、私はボードの内側の居場所を知っています。 673 00:35:48,000 --> 00:35:51,000 それから私は、単純に、順番を反転させることができ、XまたはOのいずれかを設定することができます 674 00:35:51,000 --> 00:35:54,000 エトセトラ、勝った人を確認してください。 675 00:35:54,000 --> 00:35:59,000 >> これまでのところで何か質問はありますか? 676 00:35:59,000 --> 00:36:02,000 さて、我々はオンラインで我々はあまりにも多く入るためにしたくない投稿されたすべてのコード 677 00:36:02,000 --> 00:36:06,000 Tic Tac Toeのロジックが、今あなたが本当にそれで見ることができます 678 00:36:06,000 --> 00:36:09,000 我々がやっているすべては、我々はこの配列をループしている 679 00:36:09,000 --> 00:36:13,000 ので、ここではforループのカップルを持って、私たちはただ見て比較している 680 00:36:13,000 --> 00:36:18,000 我々は、すべての行、列、またはそのような何かで一致でマッチするものはありません。 681 00:36:18,000 --> 00:36:21,000 私はこれらのいずれかのボタンをタップすると、実際には、このアプリを実行するには 682 00:36:21,000 --> 00:36:24,000 私はちょうど設定意味ように、そのプレイ方法は、解雇された 683 00:36:24,000 --> 00:36:31,000 ので、今、このボタンがOされますので、その上で、Xとするためのボタン、 684 00:36:31,000 --> 00:36:35,000 そしてそうそれは我々がこの単一のページのアプリと対話し始めている方法は以下の通りです。 685 00:36:35,000 --> 00:36:38,000 >> 我々は、コードを投稿しますので、それを熟読すること自由に感じ、 686 00:36:38,000 --> 00:36:43,000 しかし、今ちょうど1ページ以上のものであるいくつかのアプリの話をしてみましょう。 687 00:36:43,000 --> 00:36:47,000 Tic Tac Toeのと同じくらいエキサイティングにはiOSの内部に、アプリがたくさんあった 688 00:36:47,000 --> 00:36:50,000 複数の画面で物事ダウンこれらのドリルの一種である。 689 00:36:50,000 --> 00:36:54,000 我々が話をしておく必要があるでしょう最初のコンセプトは、プロトコルである 690 00:36:54,000 --> 00:36:57,000 およびプロトコルは、単にメソッドのセットです 691 00:36:57,000 --> 00:36:59,000 あなたが定義することをお約束できること。 692 00:36:59,000 --> 00:37:02,000 私は2つのメソッドを使ってこの新しいプロトコルは、この最初のものを作成する場合、 693 00:37:02,000 --> 00:37:05,000 戻り値の型がvoidの場合、私はそれをfooという。 694 00:37:05,000 --> 00:37:07,000 このメソッドは引数を取りません。私は別の方法を持っています。 695 00:37:07,000 --> 00:37:11,000 それはintを返します。私はバーにそれを呼び、それは1つの引数を取ります。 696 00:37:11,000 --> 00:37:14,000 すべてこのプロトコルは、ここSomeProtocolを呼ばれるているということです 697 00:37:14,000 --> 00:37:19,000 これは誰かが実装することができるもののセットです。 698 00:37:19,000 --> 00:37:22,000 私は内部のこのプロトコルのは、fooが何を言っていない。 699 00:37:22,000 --> 00:37:26,000 その代わりに、私はちょうどあなたがしたい場合は、fooを定義することができます言っている。 700 00:37:26,000 --> 00:37:30,000 私は、ビューコントローラを作成するか、クラスを作成している場合 701 00:37:30,000 --> 00:37:33,000 私は内部のそのクラスの約束実装することができます 702 00:37:33,000 --> 00:37:40,000 そう言う場合などに、これらのメソッドの一部、 703 00:37:40,000 --> 00:37:43,000 これは今私があなたに約束を作ってるんだと言い、その内側 704 00:37:43,000 --> 00:37:50,000 このView Controllerクラスの私は、fooとbarの両方の定義を持つことになります。 705 00:37:50,000 --> 00:37:52,000 >> なぜそれが役立ちましたか? 706 00:37:52,000 --> 00:37:55,000 iOSの内部の部品の多くは、この機能を利用する 707 00:37:55,000 --> 00:37:58,000 デザインパターンは、委任と呼ばれ、代表団は何を言う 708 00:37:58,000 --> 00:38:01,000 つまり、例えば、私は、テキストボックスを持っている場合 709 00:38:01,000 --> 00:38:04,000 と私のテキストボックスの内部に登録することができるいくつかのイベントがあります 710 00:38:04,000 --> 00:38:07,000 むしろ私は何ができるか、別のイベントを作成するよりも、私が言うことができるである 711 00:38:07,000 --> 00:38:10,000 このテキストボックスのデリゲートは、いくつかのオブジェクトになります。 712 00:38:10,000 --> 00:38:13,000 私はこのことを意味します今デリゲートであると言う場合 713 00:38:13,000 --> 00:38:16,000 いくつかのイベントは、テキストボックスに解雇されたものであれば 714 00:38:16,000 --> 00:38:18,000 のではなく、またはそのような何かを登録すること 715 00:38:18,000 --> 00:38:21,000 それはちょうどデリゲートでメソッドを呼び出すために起こっている。 716 00:38:21,000 --> 00:38:24,000 例えば、私のテキストボックスの内部は私が押したときのための方法を持っている 717 00:38:24,000 --> 00:38:27,000 それは、右下のボタンをなさ 718 00:38:27,000 --> 00:38:30,000 とそうではなく、私が言うことができる何かのイベントハンドラを登録している 719 00:38:30,000 --> 00:38:34,000 テキストボックスには、ここで私はあなたが上のメソッドをコールする必要があるオブジェクトです。 720 00:38:34,000 --> 00:38:37,000 毎回、誰かを押す[Done]ボタンを、 721 00:38:37,000 --> 00:38:40,000 そしてそれはそのオブジェクトがいくつかのプロトコルを実装しなければならないことを意味 722 00:38:40,000 --> 00:38:45,000 それは私が、そのdoneボタンアクションを定義することを約束すると言う 723 00:38:45,000 --> 00:38:47,000 、それは、そのメソッドが定義されていない場合ので、あなたはDoneを押し 724 00:38:47,000 --> 00:38:49,000 それは混乱を招くことになるだろう。 725 00:38:49,000 --> 00:38:55,000 >> のは、例を見てみましょう。 726 00:38:55,000 --> 00:38:58,000 ここで私は単に、1つのテキストボックスを持っている 727 00:38:58,000 --> 00:39:04,000 とこの右側のこっちは、このテキストボックスのプロパティのいずれかを使用すると、デリゲートです。 728 00:39:04,000 --> 00:39:06,000 これは、クラスのプロパティです。 729 00:39:06,000 --> 00:39:09,000 私がここでやったことは、私がクリックしたコントロールであり、私はここの上でこのスポットからドラッグ 730 00:39:09,000 --> 00:39:13,000 ビューコントローラへの、それは、このテキストボックスのデリゲート今言う 731 00:39:13,000 --> 00:39:18,000 ビューコントローラであることを行っている。 732 00:39:18,000 --> 00:39:20,000 いくつかのアクションが起こるのではなく、登録時にことを意味します 733 00:39:20,000 --> 00:39:25,000 私は、あなたがデリゲートにそれらを送信する別のイベントハンドラ。 734 00:39:25,000 --> 00:39:28,000 今度は、私のビューコントローラを見てみましょう。 735 00:39:28,000 --> 00:39:32,000 hファイルの内部で、私は約束をしました。 736 00:39:32,000 --> 00:39:36,000 私は、このプロトコルの内のいくつかのメソッドを実装することを約束しました 737 00:39:36,000 --> 00:39:38,000 、UITextFieldDelegateと呼ばれ、再び 738 00:39:38,000 --> 00:39:42,000 これはちょうど私が実装することを選択することができますいくつかのもののいくつかのリストです。 739 00:39:42,000 --> 00:39:46,000 >> 私はmファイルでここに来るなら、私はそのような方法を実施しています。 740 00:39:46,000 --> 00:39:49,000 私はそれtextFieldShouldReturnと呼んでいる 741 00:39:49,000 --> 00:39:52,000 そのことによって、そのプロトコルの内部で呼ばれていたものだからです。 742 00:39:52,000 --> 00:39:57,000 そして今、私はそのテキストフ​​ィールドのdoneボタンの内側を押すと、必ず 743 00:39:57,000 --> 00:40:00,000 これは呼ばれるために何が起こっているのですので、私は、イベントハンドラを登録しませんでした。 744 00:40:00,000 --> 00:40:03,000 私は、デリゲートを接続し、このイベントが起動されると必ず 745 00:40:03,000 --> 00:40:08,000 これは私が私のストーリーボードにこっちに来て、実行しそうだとすれば、呼び出されるメソッドであることを 746 00:40:08,000 --> 00:40:11,000 それはロードしていながら、私たちは、これが何をするか確認することができます。 747 00:40:11,000 --> 00:40:13,000 私の画面で私は2つのものを持っている。 748 00:40:13,000 --> 00:40:16,000 私はこのテキストフ​​ィールドを持っている、と私はこのラベルを持っています。 749 00:40:16,000 --> 00:40:19,000 私は単に私がこのラベルのテキストをしたいと言っている 750 00:40:19,000 --> 00:40:23,000 ユーザーがテキストフ​​ィールドの内側に入力したものは何でもと等しくなります。 751 00:40:23,000 --> 00:40:26,000 ここでは、この次の行は、単に私が呼んでいるという方法です 752 00:40:26,000 --> 00:40:29,000 私は、あなたがキーボードを非表示にしたいというテキストフ​​ィールドに。 753 00:40:29,000 --> 00:40:33,000 これはちょうどAppleが選んだ任意の方法です。 754 00:40:33,000 --> 00:40:38,000 >> 私が手を打つ前に、再び、私はすべてのものを配線しなければならなかったので、私が最初にここに来た。 755 00:40:38,000 --> 00:40:42,000 ビューコントローラから私は、テキストボックスにドラッグします。 756 00:40:42,000 --> 00:40:46,000 私が行かせて、私はこのテキストフ​​ィールドのプロパティを作ることができることがわかります 757 00:40:46,000 --> 00:40:49,000 こっちのビューコントローラで私は、プロパティを定義したので、 758 00:40:49,000 --> 00:40:52,000 それは、テキストフ​​ィールドのIBOutletです。 759 00:40:52,000 --> 00:40:55,000 これは、私は、このプロパティを結びつけることができると言います 760 00:40:55,000 --> 00:40:59,000 私のUIのテキストフ​​ィールドへ。 761 00:40:59,000 --> 00:41:03,000 今私はこれをクリックしたときに私が入力を開始できます。 762 00:41:03,000 --> 00:41:06,000 私が行ってボタンをクリックすると今これが発射しようとしている 763 00:41:06,000 --> 00:41:08,000 私は今に応答できるイベント。 764 00:41:08,000 --> 00:41:10,000 いいえイベントハンドラはありません。 765 00:41:10,000 --> 00:41:13,000 それは私がちょうどそのdoneボタンに反応してみましょう。 766 00:41:13,000 --> 00:41:15,000 理にかなって? 767 00:41:15,000 --> 00:41:20,000 >> これは、あなたがそれを史上自分自身を見つけることができない場合があり、デザインパターンではありません 768 00:41:20,000 --> 00:41:23,000 独自のプロトコルを作成しますが、ただ知っているいくつかの 769 00:41:23,000 --> 00:41:27,000 異なるiOSのコンポーネントは、さまざまな方法でイベントを登録します。 770 00:41:27,000 --> 00:41:29,000 ボタンには、例えば、それらIBActionsを使用しています。 771 00:41:29,000 --> 00:41:32,000 テキストフ​​ィールドは、他の一方で、デリゲートを使用しようとしている。 772 00:41:32,000 --> 00:41:36,000 我々は見ることができますし、ドキュメントのそれまでの内部のすべてを見ることができます。 773 00:41:36,000 --> 00:41:41,000 ところで、あなたのためのIOSに組み込まれたUIのもののトンが実際にあり、 774 00:41:41,000 --> 00:41:46,000 私は右下で行わ言う作ったので、例えば、道 775 00:41:46,000 --> 00:41:48,000 私はこのテキストフ​​ィールドを選択されています。 776 00:41:48,000 --> 00:41:50,000 私はここにやって来ました。 777 00:41:50,000 --> 00:41:53,000 私は、キーを返すために少し下にスクロール 778 00:41:53,000 --> 00:41:56,000 そして私は実際に私がいることを言いたい場合など、この事物の全体の束を作ることができます 779 00:41:56,000 --> 00:42:00,000 緊急時には、完全にランダムである、代わりに私がそれを行うことができる呼び出す 780 00:42:00,000 --> 00:42:02,000 内蔵の緊急呼び出しボタンがある理由と、私にはわからない、 781 00:42:02,000 --> 00:42:06,000 しかしそこに、それは本当に小さな文字で緊急コールを言う。 782 00:42:06,000 --> 00:42:08,000 そこに行く。 783 00:42:08,000 --> 00:42:12,000 >> 間違いなくiOSのこれらのさまざまなオプションのすべてを探る。 784 00:42:12,000 --> 00:42:14,000 デリゲートの何か質問はありますか? 785 00:42:14,000 --> 00:42:18,000 繰り返しになりますが、あなたが知っておくべきことだけ面白いデザインパターン。 786 00:42:18,000 --> 00:42:22,000 さて、次のテーブルビューを見てみましょう。 787 00:42:22,000 --> 00:42:26,000 テーブルビューは基本的にすべてのiOSの場所の上にある項目のそのリストです。 788 00:42:26,000 --> 00:42:29,000 あなたはすべての連絡先をめくっているとき、あなたは見ている 789 00:42:29,000 --> 00:42:34,000 設定ページ、物事のリストのようなものがテーブルビューと呼ばれます。 790 00:42:34,000 --> 00:42:37,000 iOSのテーブルビューを実装すると、非常に単純です。 791 00:42:37,000 --> 00:42:41,000 その代わりのUIViewControllerから派生するクラスを作る 792 00:42:41,000 --> 00:42:44,000 我々は単に言うのではなくする必要がある前に私たちはやったような 793 00:42:44,000 --> 00:42:46,000 のUIViewControllerは、私がやりたいんすべてのもの、 794 00:42:46,000 --> 00:42:50,000 私は、私がやりたいんUITableViewControllerをすべて言う 795 00:42:50,000 --> 00:42:54,000 そう、それは単に完全に私たちのために行われているいくつかの追加のものが追加されます。 796 00:42:54,000 --> 00:42:58,000 私たちは基本的にテーブルの内側の空白を埋めるのは非常に少しを行う必要があります。 797 00:42:58,000 --> 00:43:02,000 >> 私はいくつかの質問に答える必要がありますテーブルを表示するために。 798 00:43:02,000 --> 00:43:06,000 私が答える必要がある最初の質問は、テーブルにどのように多くのセクションですか? 799 00:43:06,000 --> 00:43:08,000 あなたの連絡先アプリをめくっているときには、それは一種のだということに気づくでしょう 800 00:43:08,000 --> 00:43:12,000 として主催する、あなたはBを持っていて、その小さなサブヘッダーがあります。 801 00:43:12,000 --> 00:43:14,000 それらの各々は、セクションと呼ばれています。 802 00:43:14,000 --> 00:43:16,000 あなたは可能性があり、または、これらを必要としないことがあります 803 00:43:16,000 --> 00:43:19,000 最初にしなければならないのは、メソッドを実装することです 804 00:43:19,000 --> 00:43:22,000 numberOfSectionsInTableView:のTableViewと呼ばれる。 805 00:43:22,000 --> 00:43:25,000 それは単に、あなたが持っているどのように多くのセクションを返す 806 00:43:25,000 --> 00:43:29,000 ですから、これは一つの大きなテーブルビューを使用している場合1を返すと言うことができます。 807 00:43:29,000 --> 00:43:33,000 iOSは知っている必要があります次の質問は、あなたはどのように多くの行を持っているんですか? 808 00:43:33,000 --> 00:43:36,000 たとえば、テーブルビューをめくっています。 809 00:43:36,000 --> 00:43:39,000 あなたは、あなたが見ている曲の数が固定または連絡先の固定番号を持っています。 810 00:43:39,000 --> 00:43:41,000 、その多くはありません、もちろん、あなたが私にしている場合 811 00:43:41,000 --> 00:43:44,000 ので、それはiOSが表示する方法を多くのセルを知ってみましょう。 812 00:43:44,000 --> 00:43:46,000 >> 繰り返しますが、これは復帰3のような何かを言うことができます。 813 00:43:46,000 --> 00:43:49,000 私のテーブルビューには、3つの行があります。 814 00:43:49,000 --> 00:43:52,000 最後に、iOSは、各セルがどのように見えるかを知っている必要があります 815 00:43:52,000 --> 00:43:54,000 だから何それが実際に何をするつもりなのは、ダウンしてここにこのメソッドを呼び出すだけです。 816 00:43:54,000 --> 00:43:57,000 これのTableView:cellForRowAtIndexPath。 817 00:43:57,000 --> 00:44:01,000 それはあなたのテーブルのすべての単一のセル内部でこのメソッドを呼び出すことになるだろう。 818 00:44:01,000 --> 00:44:03,000 それはどのようにそれを呼び出すために何回知っていますか? 819 00:44:03,000 --> 00:44:06,000 さて、あなたはセクション内の行数の中にそれを告げた。 820 00:44:06,000 --> 00:44:08,000 我々は、我々の細胞のそれぞれにこの関数を呼び出すつもりだ 821 00:44:08,000 --> 00:44:11,000 そしてあなたが実際のようなものを行うことができるこの内部がある 822 00:44:11,000 --> 00:44:16,000 テキストを設定するか、右側にその小さな青いボタンが何かを知ることができます。 823 00:44:16,000 --> 00:44:19,000 これらの細胞を得るためのパターンは、この方式を使用するつもりだ 824 00:44:19,000 --> 00:44:22,000 dequeueReusableCellWithIdentifierと呼ばれる。 825 00:44:22,000 --> 00:44:29,000 >> Objective-Cは、それらのメソッド名のとんでもない長さのために実際には非常によく知られている 826 00:44:29,000 --> 00:44:32,000 そしてこれは本当にポイントの例での素敵なケースです。 827 00:44:32,000 --> 00:44:37,000 これは、何このメソッドが何ですちょうど私があなたが私の細胞を提供したいと言います。 828 00:44:37,000 --> 00:44:39,000 ただiOSの事。 829 00:44:39,000 --> 00:44:41,000 あなたのiPodに10万曲のようなものを持っている場合 830 00:44:41,000 --> 00:44:45,000 何iOSがやりたくないことは、100,000細胞を割り当てている 831 00:44:45,000 --> 00:44:48,000 あなたのリストの上部にあるなら、あなたは、実際にはメモリーを割り当てる必要がないため、 832 00:44:48,000 --> 00:44:51,000 99000行下のセルのために? 833 00:44:51,000 --> 00:44:55,000 いいえ、あなたがスクロールしているとして、あなたが一緒に行くように割り振ることができるための一種。 834 00:44:55,000 --> 00:44:57,000 これはあなたのために行われます。 835 00:44:57,000 --> 00:44:59,000 あなたはすべてのその愚かな性能のものを心配する必要はありません。 836 00:44:59,000 --> 00:45:02,000 あなたがなんと言おうとあなたは、このメソッドを呼び出しているdequeueReusableCellWithIdentifier 837 00:45:02,000 --> 00:45:06,000 そして、これはあなたがする必要がある場合、私はあなたのための新しいセルを作成するつもりです、大丈夫、と言います。 838 00:45:06,000 --> 00:45:09,000 >> しかし、あなたは、表の一番下にしている場合、あなたはすでにいくつかのセルを割り当てた 839 00:45:09,000 --> 00:45:12,000 あなたが本当にいつでもすぐに必要とするつもりはないことは、表の一番上に 840 00:45:12,000 --> 00:45:15,000 私はあなたの代わりに新しいものを割り当てるバックそれらのいずれかを与えるつもりだ 841 00:45:15,000 --> 00:45:17,000 ので、これは素敵なパフォーマンス上の問題である。 842 00:45:17,000 --> 00:45:21,000 あなたは、セルを自分で割り当てる必要はありません。 843 00:45:21,000 --> 00:45:23,000 それはセルををお返しになるだろう。 844 00:45:23,000 --> 00:45:25,000 それはあなたにセルオブジェクトを返すようになるだろう。 845 00:45:25,000 --> 00:45:28,000 一度あなたがそれにものを行うことができますセルオブジェクトを持っています。 846 00:45:28,000 --> 00:45:32,000 あなたは、テキストラベルと呼ばれるこのプロパティでセルのテキストを設定することができます。 847 00:45:32,000 --> 00:45:36,000 あなたは右またはいくつかの他のランダムなもので、その矢印を追加することができます 848 00:45:36,000 --> 00:45:41,000 accessoryTypeと呼ばれるこの他のプロパティを持つ、などなど。 849 00:45:41,000 --> 00:45:46,000 >> のは、実際に今、テーブルビューを実装を見てみましょう。 850 00:45:46,000 --> 00:45:49,000 私はこのプロジェクトを作成したとき 851 00:45:49,000 --> 00:45:53,000 むしろ単一のビュー·アプリケーションを言うよりも、私は実際にここにやって来ました 852 00:45:53,000 --> 00:45:57,000 マスター·ディテール·アプリケーションとなり、この結果、基本的に、これはメールアプリに対応 853 00:45:57,000 --> 00:46:01,000 左側のテーブルビュー、右側の内容で計算された上で。 854 00:46:01,000 --> 00:46:07,000 iPodやiPhone上で、これは単一のテーブルビューにも対応する予定です。 855 00:46:07,000 --> 00:46:10,000 私はスターターコードを得たところです。 856 00:46:10,000 --> 00:46:13,000 >> 第一絵コンテを見てみましょう。 857 00:46:13,000 --> 00:46:15,000 このすべてが基本的に作成され、私のために行われました。 858 00:46:15,000 --> 00:46:18,000 このナビゲーション·バーには、例えば細胞がどのように見えることができるものを見せてくれた 859 00:46:18,000 --> 00:46:22,000 と私は、二重、このボタンをクリックし、タイトルを変更することができます。 860 00:46:22,000 --> 00:46:25,000 その他のUIの懸念が、私はそこを処理することができます。 861 00:46:25,000 --> 00:46:27,000 ヘッダーファイルには、本当に単純に見えます。 862 00:46:27,000 --> 00:46:30,000 むしろ我々は今、これは言っている、これはのUIViewControllerであるというより 863 00:46:30,000 --> 00:46:35,000 TableViewControllerので、我々は、我々はすべてのそれらの表のメソッドを呼び出したいことを知っています。 864 00:46:35,000 --> 00:46:38,000 次に、私が表現するために起こっているプロパティを作成する 865 00:46:38,000 --> 00:46:40,000 私のテーブルの内側の事。 866 00:46:40,000 --> 00:46:43,000 このテーブルには、任意に表示しようとしている 867 00:46:43,000 --> 00:46:46,000 フルーツのリスト、およびので、私はいくつかの配列を作成する必要があります 868 00:46:46,000 --> 00:46:49,000 これで私はフルーツを挿入することができます。 869 00:46:49,000 --> 00:46:52,000 私の実装ファイルの内部に私が最初にしたいこと 870 00:46:52,000 --> 00:46:55,000 私は、この配列を初期化することを確認したいです。 871 00:46:55,000 --> 00:46:58,000 >> 私は、アロケーションは、init言い私の果実の配列を作成し、 872 00:46:58,000 --> 00:47:03,000 と私は、そこに他の3よりもはるかに多くの物議を醸しているそのうちのいずれかを4つの事を追加している。 873 00:47:03,000 --> 00:47:06,000 そして今、私は大きさ4の配列を持っている。 874 00:47:06,000 --> 00:47:08,000 我々はCS50でそれを振っている。 875 00:47:08,000 --> 00:47:11,000 私は今、大きさ4の配列を持っている。 876 00:47:11,000 --> 00:47:13,000 今私は、実際にこれらの質問への回答を開始する予定、としている 877 00:47:13,000 --> 00:47:16,000 私はこのアプリを作成したときにこれのすべては、すでに私のために行われました。 878 00:47:16,000 --> 00:47:19,000 私は、テーブルビューのセクションの数を入力する必要はありませんでした。 879 00:47:19,000 --> 00:47:22,000 それはそこに既にあった、と私は空白を埋めるよ。 880 00:47:22,000 --> 00:47:24,000 私はどのように多くのセクションを持っていますか? 881 00:47:24,000 --> 00:47:26,000 一つ。すべてが完了しました。 882 00:47:26,000 --> 00:47:28,000 私はどのように多くの行を持っていますか? 883 00:47:28,000 --> 00:47:31,000 まあ、私はすべての果実に1つの行を持っているので、このカウント 884 00:47:31,000 --> 00:47:34,000 それはどのくらいの大きさですと言い、任意の配列のプロパティですか? 885 00:47:34,000 --> 00:47:36,000 それは私が持っているどのように多くの行です。 886 00:47:36,000 --> 00:47:42,000 最後に、私は、各セルがどのように見えるか言う必要がある? 887 00:47:42,000 --> 00:47:46,000 私はdequeueReusableCellWithIdentifierを言うつもりです。 888 00:47:46,000 --> 00:47:48,000 >> 繰り返しますが、これは既に私のために書かれました。 889 00:47:48,000 --> 00:47:51,000 私はこれを自分でする必要はありませんでした、と私は戻って取得したい 890 00:47:51,000 --> 00:47:54,000 この場所でこのセル。 891 00:47:54,000 --> 00:47:57,000 我々は一つ一つのセルにこの同じメソッドを呼び出していることを覚えておいて、 892 00:47:57,000 --> 00:48:01,000 ここでは、この引数は、このindexPathの引数、 893 00:48:01,000 --> 00:48:03,000 私が入っているん行言う 894 00:48:03,000 --> 00:48:05,000 私はここindexPath.rowダウンと言うなら 895 00:48:05,000 --> 00:48:09,000 これが0になり、それが1になり、それは2になりますが、これは私が知っているそうです 896 00:48:09,000 --> 00:48:11,000 私は、現在表示しているものの細胞。 897 00:48:11,000 --> 00:48:15,000 私はこのtextLabelプロパティを使用してセルのテキストを設定したい 898 00:48:15,000 --> 00:48:19,000 私のフルーツの配列中に入ると取得する 899 00:48:19,000 --> 00:48:21,000 それぞれの行に対応するオブジェクト。 900 00:48:21,000 --> 00:48:24,000 これが文字列であれば、私は今、設定してい 901 00:48:24,000 --> 00:48:28,000 文字列へのテキストプロパティ。 902 00:48:28,000 --> 00:48:30,000 私はもう一つのことを行うことができます。 903 00:48:30,000 --> 00:48:32,000 私はまた、細胞のそれぞれにイベントハンドラを登録することができます 904 00:48:32,000 --> 00:48:35,000 ので、私はこれらの細胞のそれぞれをタップしたとき 905 00:48:35,000 --> 00:48:39,000 このdidSelectRowAtIndexPath、これは私のために呼ばれようとしている、 906 00:48:39,000 --> 00:48:42,000 ので、単にこれを定義することによって、私は今、何が起こるかを扱うことができます 907 00:48:42,000 --> 00:48:46,000 セルをタップし、再び時、我々はセルがタップされた渡している 908 00:48:46,000 --> 00:48:50,000 ので、我々は我々の細胞のすべてのために、これと同じイベントハンドラを再利用することができます。 909 00:48:50,000 --> 00:48:53,000 >> 繰り返しますが、これはiOSが私のためにやっているものです。 910 00:48:53,000 --> 00:48:55,000 別の迷惑なポップアップを表示してみましょう 911 00:48:55,000 --> 00:48:59,000 それは単にあなたがその何かを選んだと言う 912 00:48:59,000 --> 00:49:04,000 行オブジェクトであることを行っている。 913 00:49:04,000 --> 00:49:10,000 私はこれを実行すると、私はこの素敵なテーブルビューを持っているつもりです 914 00:49:10,000 --> 00:49:14,000 これらのフルーツのそれぞれに1つの行を持つ、と私は1つをタップすると 915 00:49:14,000 --> 00:49:16,000 それは何が起こったのか私に語った。 916 00:49:16,000 --> 00:49:21,000 理にかなって? 917 00:49:21,000 --> 00:49:24,000 のは、アプリのもう少し複雑作ろう 918 00:49:24,000 --> 00:49:28,000 あなたはトマトを選んクリックするのと同じくらいです。 919 00:49:28,000 --> 00:49:31,000 絵コンテの良い部分 920 00:49:31,000 --> 00:49:35,000 それだけで私たちは個別に画面を設計するのに役立つことはないだろうし、 921 00:49:35,000 --> 00:49:38,000 それはまた、私たちは私たちの全体のアプリを結びつける手助けになるだろう、 922 00:49:38,000 --> 00:49:42,000 私たちは建物になります最後のアプリは、この素晴らしいスポーツニュースリーダーです 923 00:49:42,000 --> 00:49:45,000 ので、それは複数の画面を持っているために起こっているので、私は実際に表すことができます。 924 00:49:45,000 --> 00:49:48,000 ストーリーボードでこれらの複数の各画面、 925 00:49:48,000 --> 00:49:52,000 と私はズームアウトして高レベルから私のアプリを見ることができます。 926 00:49:52,000 --> 00:49:55,000 >> 私の絵コンテの新しい要素を内部に作成するために 927 00:49:55,000 --> 00:49:59,000 それは、Interface Builderの内側本当に簡単です。 928 00:49:59,000 --> 00:50:01,000 私はこれに別の画面を追加したい場合は、例えば、 929 00:50:01,000 --> 00:50:06,000 私は最初、Appleがそんなに大好きピンチズームでズームアウトできます 930 00:50:06,000 --> 00:50:09,000 上下ここで私はボタンを検索する前に 931 00:50:09,000 --> 00:50:12,000 と私は、ボタンをドラッグ&ドロップ 932 00:50:12,000 --> 00:50:15,000 私は新しい画面を作成する場合は、私は実際にちょうどドラッグアンドドロップできます 933 00:50:15,000 --> 00:50:19,000 全体のビューコントローラは、私がこれを拾うので、もし、ここにそれを上に引っ張る 934 00:50:19,000 --> 00:50:23,000 ねえ、そこに別の画面だし、だから今この同じストーリーボードファイルを使用して 935 00:50:23,000 --> 00:50:26,000 私は私のアプリの内部ですべての画面を持つことができる、と私はズームアウトすることができます 936 00:50:26,000 --> 00:50:28,000 そして、彼らがどのように相互作用するかを参照してください。 937 00:50:28,000 --> 00:50:32,000 これらは、まだ相互作用しません。 938 00:50:32,000 --> 00:50:36,000 これらの2つのスクリーンが相互作用する方法は、あなたが関係を定義することです。 939 00:50:36,000 --> 00:50:39,000 基本的には、このボタンを押すと、この画面を言うことができます 940 00:50:39,000 --> 00:50:42,000 私はあなたがこの新しい画面にオーバースライドする。 941 00:50:42,000 --> 00:50:44,000 の間にこのような関係があることを意味し 942 00:50:44,000 --> 00:50:46,000  最初の画面と次の画面。 943 00:50:46,000 --> 00:50:49,000 基本的には、そのボタンから2番目の画面に矢印があるでしょう 944 00:50:49,000 --> 00:50:53,000 あなたは、私が行きたいところだ、このボタンを押したときにことが書かれています。 945 00:50:53,000 --> 00:50:57,000 我々はそれらのアウトレットを定義するためにクリックしてドラッグしているコントロールだけが好き 946 00:50:57,000 --> 00:51:01,000 我々はこれらのseguesを定義するために同じことをやろうとしている。 947 00:51:01,000 --> 00:51:05,000 >> 我々はそのための例を参照してください、我々は実際に移行する前によ 948 00:51:05,000 --> 00:51:08,000 ある画面から別の画面にiOSは、このメソッドを呼び出すには十分素敵です 949 00:51:08,000 --> 00:51:11,000 prepareForSegueと呼ばれ、我々が開始することができる場所です 950 00:51:11,000 --> 00:51:14,000 別のアプリからデータを送信する。 951 00:51:14,000 --> 00:51:17,000 我々はそれを見てついでに例では、基本的に私達を許可する 952 00:51:17,000 --> 00:51:20,000 リーグや部門が野球チームをフィルタリングします。 953 00:51:20,000 --> 00:51:23,000 私はリーグを選択すると、例えば、私は移行したい 954 00:51:23,000 --> 00:51:25,000 私は部門のすべてを表示することができます私の次の画面へ 955 00:51:25,000 --> 00:51:27,000 そのリーグで、またはすべて異なるチーム。 956 00:51:27,000 --> 00:51:31,000 私はあなたが表示されるはずですどのチームがその画面に送信する必要があります。 957 00:51:31,000 --> 00:51:35,000 私はここでこの方法の利点を取るつもりだこれを行うに。 958 00:51:35,000 --> 00:51:39,000 >> 最後に、iOS上だけでランダムな点。 959 00:51:39,000 --> 00:51:41,000 あなたはデータを格納する場合は、コア·データと呼ばれるこの事は、あります 960 00:51:41,000 --> 00:51:44,000 これは実際に動作するように複雑のようなものです。 961 00:51:44,000 --> 00:51:47,000 また、データを格納するためにSQLを使用することができます 962 00:51:47,000 --> 00:51:51,000 これは、再び、、で動作するように、より複雑な側面にいいが、種のある 963 00:51:51,000 --> 00:51:55,000 しかしiOSはまた、プロパティリストと呼ばれるこれらの本当にクールなものをサポートしています 964 00:51:55,000 --> 00:52:00,000 とプロパティリストは、単にキーと値のペアを表すファイルです。 965 00:52:00,000 --> 00:52:03,000 あなたは、キーのリストを定義し、このキーが配列であることを行っていると言う。 966 00:52:03,000 --> 00:52:06,000 このキーは文字列であることを行って、基本的にあなたが何かできることさ 967 00:52:06,000 --> 00:52:10,000 JSONでは、プロパティリストの中行うことができます 968 00:52:10,000 --> 00:52:14,000 ので、これは本当にうまく、私たちはいくつかのデータを扱うことができます。 969 00:52:14,000 --> 00:52:18,000 たとえば、私は、私が作成したこのTeams.plistを持っています。 970 00:52:18,000 --> 00:52:22,000 私は新しいplistファイルを作成し、私はドリルダウンすることができます。 971 00:52:22,000 --> 00:52:26,000 これは辞書ですが、これは、これらは文字列ですが、辞書です 972 00:52:26,000 --> 00:52:30,000 ので、これはJSONドキュメントの素敵なグラフィカルに表現したものです 973 00:52:30,000 --> 00:52:33,000 またはキーと値のペアのセットだけ、 974 00:52:33,000 --> 00:52:37,000 ので、これは私が私のアプリの内部で作業するようになるとデータです。 975 00:52:37,000 --> 00:52:40,000 >> 最初にここに来てみましょう。我々は今、より多くのファイルを持っている。 976 00:52:40,000 --> 00:52:44,000 しかし、最初にストーリーボードにここに来てみましょう。 977 00:52:44,000 --> 00:52:48,000 ストーリーボードヒア場合、私はズームすることができますアウト 978 00:52:48,000 --> 00:52:51,000 我々は今、これが私のアプリの流れであることがわかります。 979 00:52:51,000 --> 00:52:53,000 私が最初にこの画面に開始するつもりだ。 980 00:52:53,000 --> 00:52:55,000 私は、この画面にドリルダウンするつもりだ 981 00:52:55,000 --> 00:52:58,000 と私は、この画面にドリルダウンするつもりだ、と我々はここで見ることができます私はこの種の場合 982 00:52:58,000 --> 00:53:04,000 我々はこれらの矢印は、ここからここへ行くた周りに、これらのいずれかを移動 983 00:53:04,000 --> 00:53:08,000 私は少しでズームインした場合、私は、その矢印を定義する方法があった 984 00:53:08,000 --> 00:53:12,000 と私は、このビューコントローラに来た場合、 985 00:53:12,000 --> 00:53:16,000 そしてここでは、セルだし、セルをタップしたときに私はそれを言いたい 986 00:53:16,000 --> 00:53:18,000 私はあなたが別の画面に上にスライドさせたいと思います。 987 00:53:18,000 --> 00:53:21,000 私は単に、コントロールを押したままにすることができ 988 00:53:21,000 --> 00:53:26,000 少し上をスクロールし、コントロールを押しながら、このセルを上にドラッグして放す。 989 00:53:26,000 --> 00:53:30,000 >> そして、ここの上に私たちは、あなたが使用したいトランジション何と言う? 990 00:53:30,000 --> 00:53:32,000 あなたは、プッシュと呼ばれる、そのスライドのものを使用したいのですか? 991 00:53:32,000 --> 00:53:34,000 あなたは下から上にスライドしてもよろしいですか? 992 00:53:34,000 --> 00:53:36,000 それはモーダルと呼ばれています。 993 00:53:36,000 --> 00:53:40,000 そして、かつて私は、これらのいずれかをクリックし、それは私のためにこの矢印を描画するために起こっている、 994 00:53:40,000 --> 00:53:44,000 そしてそれは私が実際に私がグラフィカルに、このボタンを押したときに何が起こるかに処理したことを意味します。 995 00:53:44,000 --> 00:53:48,000 私は実際には1つの画面から次のいずれかにスライドさせて任意のコードを書いていない。 996 00:53:48,000 --> 00:53:51,000 私は、Interface Builderの、これは視覚的に定義された内部。 997 00:53:51,000 --> 00:53:55,000 私は、この矢印をクリックすると、我々は、私はこの事に名前を与えたことがわかります。 998 00:53:55,000 --> 00:53:59,000 私はそれがshowDivisionsと呼ばれ、これは私が知ることができるようです 999 00:53:59,000 --> 00:54:03,000 何の遷移が行われようとしている、なぜちょうど秒で我々が表示されます。 1000 00:54:03,000 --> 00:54:06,000 それは私が私のアプリで異なる画面を有線した方法です。 1001 00:54:06,000 --> 00:54:09,000 これはボタン、例えば、テーブルではなくビューだったら、 1002 00:54:09,000 --> 00:54:11,000 私は、ボタンをクリックして次の画面にドラッグオーバー制御できる 1003 00:54:11,000 --> 00:54:16,000 そしてそれは私がそのようにナビゲーションを行うことができる方法です。 1004 00:54:16,000 --> 00:54:19,000 >> 本当にすぐに、我々はMasterViewControllerに来れば、 1005 00:54:19,000 --> 00:54:22,000 再び、我々は、単に物事のリストを定義しましょう 1006 00:54:22,000 --> 00:54:26,000 それは、テーブルビューに表示されます。 1007 00:54:26,000 --> 00:54:29,000 ここで私は、私はあなたがそのplistファイルを利用したいと言っている 1008 00:54:29,000 --> 00:54:32,000 と私はあなたが、辞書にそれをロードする 1009 00:54:32,000 --> 00:54:35,000 そして一度その辞書を持って、私はもう一度、同じ質問に答えるつもりです。 1010 00:54:35,000 --> 00:54:37,000 ここではセクションの数です。 1011 00:54:37,000 --> 00:54:41,000 一つは、そこにすべてのリーグごとに1つの行があり、各セルのテキスト 1012 00:54:41,000 --> 00:54:46,000 は最初の1、初のリーグ、2部リーグ、どちらかでなければなりません。 1013 00:54:46,000 --> 00:54:51,000 最後に、私は我々がちょうどprepareForSegue呼ば紛れ込んだ、このメソッドを使用するつもりだ、 1014 00:54:51,000 --> 00:54:54,000 そしてこれは私がクリックしたときに解雇されるために起こっている方法です 1015 00:54:54,000 --> 00:54:57,000 これらの行のいずれかにして、したがって、その変遷を活性化 1016 00:54:57,000 --> 00:54:59,000 私は矢印で設定した。 1017 00:54:59,000 --> 00:55:02,000 これは、私は複数持つことができることを言っている 1018 00:55:02,000 --> 00:55:05,000 ある画面から別の画面への関係。 1019 00:55:05,000 --> 00:55:08,000 私は2つのボタンがあり、各ボタンは、別の画面に移動した場合 1020 00:55:08,000 --> 00:55:10,000 私は2 segues、各ボタンの1を持っているつもりです。 1021 00:55:10,000 --> 00:55:14,000 しかし、このprepareForSegueは、再利用されようとして、再び、 1022 00:55:14,000 --> 00:55:17,000 さまざまな関係のそれぞれについて、私は方法が必要であることを意味しているので、 1023 00:55:17,000 --> 00:55:21,000 あなたが最初のボタンを押すか、または2番目のボタンを押した場合に識別する。 1024 00:55:21,000 --> 00:55:25,000 >> 私はセグエ名前、このshowDivisionsを与えたときのことを覚えて 1025 00:55:25,000 --> 00:55:29,000 それは私が今、これが活性化されたセグエであることを知っている方法です。 1026 00:55:29,000 --> 00:55:32,000 私がやりたいのは、私は言いたいです 1027 00:55:32,000 --> 00:55:35,000 私はちょうど打つかを把握したい、 1028 00:55:35,000 --> 00:55:38,000 そしてその結果を得るために、私は、私が選択した行のindexPathをしたいと言うことができます 1029 00:55:38,000 --> 00:55:42,000 私はクリックした場所を覚えてindexPathはちょうど言う、 1030 00:55:42,000 --> 00:55:47,000 そして私は私が行くよどこに把握したいと言いたい。 1031 00:55:47,000 --> 00:55:50,000 このdestinationViewController、セグエのプロパティです。 1032 00:55:50,000 --> 00:55:53,000 それは私がするつもりです画面ですが、 1033 00:55:53,000 --> 00:55:56,000 ので、私はするつもりです画面がDivisionsViewControllerと呼ばれていることを知っている 1034 00:55:56,000 --> 00:55:59,000 私は、そのクラスを作成したので、 1035 00:55:59,000 --> 00:56:02,000 そして、今、私はd.divisionsを言えば 1036 00:56:02,000 --> 00:56:06,000 私は今、私が行き程度だビューコントローラのプロパティを設定しています。 1037 00:56:06,000 --> 00:56:10,000 これは、私が別の画面に1つの画面からデータを送っているかということです。 1038 00:56:10,000 --> 00:56:13,000 >> ちょうどこのDivisionsViewController見 1039 00:56:13,000 --> 00:56:16,000 あなたはここで見ることができます。hファイルで 1040 00:56:16,000 --> 00:56:20,000 、そこにその財産部門があり、それは、私は基本的に移入するんだよ 1041 00:56:20,000 --> 00:56:25,000 そう、それは私が私が対応する部署を表示していることを知っている方法です 1042 00:56:25,000 --> 00:56:28,000 私はクリックして、もう一度、そのリーグ 1043 00:56:28,000 --> 00:56:31,000 実際のテーブルビューはちょうどそれらの質問に答えると、ほとんど同じように見えます 1044 00:56:31,000 --> 00:56:34,000 シンプルな3つの質問だけでなく、識別 1045 00:56:34,000 --> 00:56:37,000 次の画面に移動したときに何が起こるか。 1046 00:56:37,000 --> 00:56:40,000 ここでは他の物事のカップルだけ。 1047 00:56:40,000 --> 00:56:43,000 現在地上部に気づくことはなく、#includeの格言 1048 00:56:43,000 --> 00:56:45,000 私は今、#importを言っている。 1049 00:56:45,000 --> 00:56:47,000 これはちょうど、Objective-Cのものです。 1050 00:56:47,000 --> 00:56:52,000 インポートは、基本的にインクルードのよりよいバージョンです 1051 00:56:52,000 --> 00:56:57,000 例えば、我々は、このクラスが何であるかを知っておく必要があります 1052 00:56:57,000 --> 00:57:00,000 ので、私はちょうどDivisionsViewControllerを言うことはできません。 1053 00:57:00,000 --> 00:57:05,000 私達は私達のcファイルのstandardio.c内部ハッシュタグなかった場合 1054 00:57:05,000 --> 00:57:07,000 コンパイラはprintfだったのか見当もつかなかった。 1055 00:57:07,000 --> 00:57:12,000 同様に、私はDivisionsViewControllerをインポートしない場合 1056 00:57:12,000 --> 00:57:16,000 コンパイラは本当にDivisionsViewControllerが何であるかわからない。 1057 00:57:16,000 --> 00:57:19,000 ちょうどあなたが異なる。メートルファイルの内部は、インポートしていることを確認していることを確認してください 1058 00:57:19,000 --> 00:57:25,000 コンパイラは何が起こっているか知っているように対応する。hファイル。 1059 00:57:25,000 --> 00:57:31,000 >> 最後に、どのようなAppleは最終的に、Webビューを使用して、一部のデータが表示されません 1060 00:57:31,000 --> 00:57:35,000 などのWebビューでは、埋め込むことができるオブジェクトです 1061 00:57:35,000 --> 00:57:37,000 あなたのアプリの中の小さなウェブブラウザ。 1062 00:57:37,000 --> 00:57:40,000 あなたがする必要があるのは、WebブラウザにURLを指定している 1063 00:57:40,000 --> 00:57:43,000 ので、私は、mlb.mlb.comに行きたい 1064 00:57:43,000 --> 00:57:46,000 そしてこれは、私は、各チームのホーム·ページにアクセスすることができる方法です 1065 00:57:46,000 --> 00:57:49,000 ので、このURLに渡すことによって、 1066 00:57:49,000 --> 00:57:52,000 Web表示は私のためにこれを表示することができ、私は周りを閲覧することができ、 1067 00:57:52,000 --> 00:58:01,000 とシミュレータはその1で使用されています。 1068 00:58:01,000 --> 00:58:03,000 さて、これは私のplistから来ました。 1069 00:58:03,000 --> 00:58:07,000 私はこれをクリックした場合、これはまた、私のplistのから来て、このスライドは、処理されていました 1070 00:58:07,000 --> 00:58:09,000 それらseguesを定義することによって。 1071 00:58:09,000 --> 00:58:12,000 私は、これをクリックして一つ以上の 1072 00:58:12,000 --> 00:58:15,000 そして今ここにそうちょうどそのように、私のUIWebViewである 1073 00:58:15,000 --> 00:58:19,000 ここで私はちょうど埋め込んだURLのウェブサイトでは、だ 1074 00:58:19,000 --> 00:58:21,000 と私は夢中何も処理する必要はありませんでした。 1075 00:58:21,000 --> 00:58:24,000 これは、Webページを表示する方法です。 1076 00:58:24,000 --> 00:58:27,000 ここでは、この戻るボタンのようなものが私にも与えられている 1077 00:58:27,000 --> 00:58:33,000 完全に無料で私がseguesを使用して、これらの関係を定義しているので。 1078 00:58:33,000 --> 00:58:37,000 >> 何か質問?うん。 1079 00:58:37,000 --> 00:58:40,000 [学生]だからあなたはallocを使用するときは、無料の何もする必要はありません? 1080 00:58:40,000 --> 00:58:43,000 正確には、allocやinitを呼び出したとき、あなたはそれを解放する必要はありません。 1081 00:58:43,000 --> 00:58:46,000 IOSは、あなたのためにすべてのことを処理しようとしている。 1082 00:58:46,000 --> 00:58:51,000 それは素晴らしいですし、あなたは、任意のルールを破っていない。うん。 1083 00:58:51,000 --> 00:58:54,000 [学生]は、画面に合うことができるより多くのチームを含めるとしたら、 1084 00:58:54,000 --> 00:58:58,000 それは自動的にスクロールオプションを持っている、またはあなたが追加する必要が何かあるでしょうか? 1085 00:58:58,000 --> 00:59:01,000 私はより多くのチームを持っていた場合、正確には、例えば、それが自動的に処理したい 1086 00:59:01,000 --> 00:59:04,000 私のためにスクロールし、すべてのパフォーマンスの問題 1087 00:59:04,000 --> 00:59:08,000 巨大なテーブルでも私にとっては完全に処理されます。 1088 00:59:08,000 --> 00:59:11,000 >> その他の質問は? 1089 00:59:11,000 --> 00:59:13,000 このコードの全てが投稿されようとしています。 1090 00:59:13,000 --> 00:59:16,000 私達は種類のもので、それ以上の細部を少し上に練り 1091 00:59:16,000 --> 00:59:19,000 Webビューにいくつかのプロパティを設定するような物事 1092 00:59:19,000 --> 00:59:22,000 ちょうどあなたがAppleのドキュメントを参照することによって得ることができるものであり、 1093 00:59:22,000 --> 00:59:24,000 本当にある、本当にきれいにレイアウト。 1094 00:59:24,000 --> 00:59:27,000 彼らは、サンプルアプリケーションやサンプルの用途の多くを持っている 1095 00:59:27,000 --> 00:59:34,000 さまざまなAPIのため、間違いなく可能であればそれらに目を通してほしい。 1096 00:59:34,000 --> 00:59:36,000 ちょうどいくつかの有用なリンクがあなたを見てみると良いでしょう。 1097 00:59:36,000 --> 00:59:38,000 これらは、いくつかの便利なドキュメントのガイドです。 1098 00:59:38,000 --> 00:59:41,000 URLは巨大であることから、これらは短縮している。 1099 00:59:41,000 --> 00:59:44,000 この最初の1は、ドキュメント全体のライブラリです。 1100 00:59:44,000 --> 00:59:46,000 少し検索バーは、ボタンを入力を開始する場合には、あります 1101 00:59:46,000 --> 00:59:50,000 それはあなたがボタンを使用して実行できるすべてのものについてのすべての情報を与えることを開始します。 1102 00:59:50,000 --> 00:59:53,000 私はまた、Table Viewのプログラミングガイドを用意しました。 1103 00:59:53,000 --> 00:59:56,000 それは、はるかに詳細にテーブルビューを扱う 1104 00:59:56,000 --> 01:00:00,000 動的にセルを追加したり、セルを編集したり削除するようなことをする方法を説明します。 1105 01:00:00,000 --> 01:00:02,000 >> どのようにそれを行う方法を紹介しますアップルからサンプルアプリケーションの多くは、あります 1106 01:00:02,000 --> 01:00:05,000 そして最後に、この最後の1つは、ヒューマンインターフェイスガイドラインである 1107 01:00:05,000 --> 01:00:09,000 そして、これは基本的にはUIコンポーネントのいくつかの議論があり、 1108 01:00:09,000 --> 01:00:12,000 のようなものが4ピクセルで4ピクセルのボタンを作成しないでください。 1109 01:00:12,000 --> 01:00:15,000 それは悪いアイデアだし、Appleはあなたがやりたいことを他の事 1110 01:00:15,000 --> 01:00:18,000 良いデザインを奨励する。 1111 01:00:18,000 --> 01:00:23,000 >> 我々は最後の仕上げをする前に、すべての最後の質問は? 1112 01:00:23,000 --> 01:00:27,000 すべての権利は​​、間違いなく議論に特別なラベルを持っているつもり-we'reまでお気軽に。 1113 01:00:27,000 --> 01:00:30,000 我々は、iOSの1を持っていきますので、間違いなくそれを利用して自由に感じる。 1114 01:00:30,000 --> 01:00:34,000 あなたは、プロジェクトにクラスメートと協力したい場合は 1115 01:00:34,000 --> 01:00:37,000 またはいくつかのランダムなiOSのようなものを見つけ出す手助け 1116 01:00:37,000 --> 01:00:40,000 私に電子メールを送ること自由に感じ、そして間違いなくあるため、すべてのコードをオンライン熟読 1117 01:00:40,000 --> 01:00:43,000 ただ時間の関係で、我々はより多くの種類の上に練り 1118 01:00:43,000 --> 01:00:45,000 物事のより細かい詳細が表示されます。 1119 01:00:45,000 --> 01:00:47,000 しかし、そうでない場合は、あなたのiOSプロジェクトの幸運、そして、私は我々が持っている願っています 1120 01:00:47,000 --> 01:00:53,000 App Storeでアプリの大きな流入。 1121 01:00:53,000 --> 01:00:56,000 [CS50.TV]