天城LIU:ねえ、方法です それは誰に行く? そして、これはiOSのアプリです Objective Cのセミナーのプログラミング。 そして、私の名前は天城劉です。 私は、今、ローウェルジュニアだ コンピュータサイエンスに集中する。 したがって、このセミナーで私は今 あなたたちを教えるつもり アプリを作成する方法について少し。 イェーイ、それのための興奮する。 だから、私たちも、ダイビングを開始する前に 実際のプログラミング側に、 ちょうど本当にすぐについてお話しましょう なぜあなたはiOSアプリを構築したいのでしょうか? なぜ、iOSのは、とても素晴らしいです? だから、最初の問題、第一 私たちのために非常に素晴らしいですもの、 特にCS50として 学生は、そのiOSのです 目的C.さてを使用しています、あります スウィフトと呼ばれる新しい言語、 私たちはするつもりはない このセミナーではそれを使用。 あなたはスウィフトに興味があるなら、そこに そのことについて独立したセミナーです。 しかし、Objective Cのは基本的にあり C.意味のスーパーセット あなたがC言語で使用して、すべてができる Objective Cのに翻訳される 非常に簡単に。 あなたはその確かに、後で見るかもしれませんが いくつかの非常に基本的な構文は次のとおりである、ある 基本的には全く同じ、 CとObjective C.だから、 あなたはCS50をとっているので、 このアップまでのところ、あなたはすでに 、少なくとも40%を目標Cを知っている。 また、Appleは本当にがある iOS用堅牢なAPI。 本当にクレイジーがたくさんあり​​ます 物事はあなたがそれを行うことができます。 の一つは人です 実際にiOSアプリを作成しました 車を制御するために、その かなり面白いです。 おそらくヘリコプターは、よりエキサイティングです。 しかし、それはどのように強力です iOSのAPIは、することができます。 そして、あなたが持つかもしれないとして、 今、考え出した、 スタックオーバーフローは、おそらくの1である 最も重要なオンラインリソース あなたに利用できる。 そして、すべてのための良いニュース、 あなたはおそらくできる単一の問題 あなたを構築しながら考える Objective Cの中で最終的なプロジェクト、 スタックオーバーフロー答えがありそうです。 それはちょうど素晴らしいです。 それに加えて、 iOSのは本当にプラットフォームです あなたは巨大に達することができる場所 少しの努力で観客。 それは、Androidを、ようではありません すべてがかなり断片化されます。 すべてのiOSが統一される。 そして、限り、あなたは作成するように iPhone用アプリ、 あなたができる非常に簡単にポートのiPadへの、 iPadのミニ、または別のiPhoneのサイズ。 これらはすべて、本当に便利です。 そして、それは本当に良いことだ 友達に印加するため。 あなただけのiPhoneを保持することができます と、ちょっとお友達に伝える これは私が作るアプリです。 あなたはすべてのためにそれを行うことができます いいですデスクトップアプリ、。 すべての権利、今のは、実際に取得させ 言語のObjective Cに では、なぜ私たちは始まらない いくつかの本当に基本的な構文。 私は客観前に述べたように Cそれは、基本的にはCのスーパーセットです だから、基本的な構文がたくさんある 実際に全く同じ。 変数を宣言し、 2つの変数を一緒に追加 我々はマリオに行っているとまったく同じです。 ここに新しい何もない。 forループ同様に、下宿人 条件も同様である。 あなたはちょうどあなたのようにループのためにできること マリオ[聞こえない]でやったしている。 そして、あなたは条件を行うことができます まさにあなたのように 以前のPセットで行ってきた。 しかし、Objective Cの 完全にCではありません、 そしてそのものがある 種類の奇妙なそれについてです。 最初のものはあなたがいる時ということである Cプログラミングをやって、あなたは一般的に呼び出す 含めると、ライブラリ名。 しかし、Objective Cの中には、そのインポートを呼び出します。 基本的には、機能性を言って ちょうど異なった名前。 そして、文字列がある 実際に少し奇妙な。 あなたが最初にあることがわかります 一種の奇妙ですもの あなたはかなりweird--を有することである sorry--あなたはかなり奇妙なNSを持っている こっちに署名する。 そして、第二のもの それは一種の奇妙な あなたが前に看板を持っている 実際に文字列を宣言。 だから、アットマーク、基本的意味 文字列が文字列であるだけでなく、 実際にはオブジェクトである。 私たちは説明するつもりだ その後でそうしない パニックあなたがいない場合は それが何を意味するかを理解しています。 そして、コンソールへの印刷が少しある 異なるため、私たちはprintfのを呼び出すC言語で、 しかしObjective Cの中で、我々は[聞こえない]を呼び出します。 あなたはそれが何であるか疑問に思われるかもしれません。 つまり、基本的にはprintfのです ただ異なる言語。 全く同じ用法、 まったく同じ機能を提供します。 まあそれはことが判明 Objective Cの実際 ほとんどでNSの接頭辞を持って すべてが、すべての基本データ型、 NSStringの、NSArrayを、NSDictionaryの。 その理由は、NSいる 実際に次のステップを表し、 その会社これは スティーブジョブズが設立し、 同社は、これはどこに 言語のObjective Cが生まれている。 だから、これは基本的に伝統です。 私はそれは少し知っている 奇妙な、それはAppleの。 そうであっても奇妙である何か それよりも関数の宣言である。 これは私たちとは非常に異なっている C言語で参照、ため、ここで実際にそれ もうCのようには見えません。 あなたは何によってhere--いる これは箇条書きではない方法で、 これは、マイナス記号です。 あなたは、マイナス記号括弧を持っている 無効にした後、関数名。 我々あればちょうど言ってみましょう その後、Hello Worldのを持っている 戻り値の型はvoidになる 私たちは何も返さないからです。 本当に奇妙な取得します あなたがいるときにということです 複数のパラメータを有する その同じ関数に渡す ここに示すように、本当に奇妙になります。 私たちは、メソッド名を持っている、 に呼ばれているAddInt [聞こえない] 私たちは一つのパラメータを渡している。 しかし、その後、私たちは持っている でより多くのメソッド名のコール。 そして、とした後、我々は渡している 二番目のパラメータ。 これは、実際には少し奇妙です しかし、これらすべての関数宣言 これと同じパターンに従います。 私たちは、そもそもマイナス記号を持っている。 マイナス記号はプラス記号かもしれない 時々方法の種類に基づいて、 それは。 この方法は、基本的に 関数の別の名前。 そして、我々はするつもりだ その後でとき説明 我々は、オブジェクトの話をしている 指向プログラミング。 あなたが最初のリターンを指定する 括弧内のタイプ、 その後にメソッド名が来る。 あなたは、一つのパラメータを渡している。 そして、あなたはより多くのパラメータを持っている場合 あなたは、メソッド名を拡張する必要があります と基本的にはより多くのここに何かを書く。 それはあなたがほしい何である可能性があります。 私たちのケースでは、とのです。 しかし、あなたが言うことができる終わり、またはあるいは、または あなたが好きなABC本格的なバー、。 そして、その後にあなたがしている パラメータbを渡す。 これは本当に奇妙です 大会が、我々はされている Appleが欲しい理由を見に行く 非常に迅速にそれを行うには。 それでは、どのように関数を呼び出すのですか? 目的関数の呼び出し Cはまた、C.異なる 実際に、αを呼び出す Objective Cの関数 あなたが誰かに話しているよりのようなものです。 ここでは、自己を持っている オブジェクトと呼ばれます。 あなたは基本的に言っている と言って、オブジェクトの自己の「Hello World!」を つまり、関数を呼び出す方法です。 オブジェクトとメソッド名 互いに組み合わせる。 そして、これはどこに奇妙な拡張機能です メソッド名のために実際に戦場に出る。 の第二の例を見てみましょう。 私達はちょうどと呼ばれるメソッドを定義した いるAddIntと何とか何とか何とか。 この場合にはあなたが呼び出しているとき 特定の[?メッセージ?]それが起こっている と10:2セルフいるAddIntのように見える。 これは、英語のように聞こえる。 機能ものの 関数の宣言は、奇妙です Objective Cの年代のポイント メソッド宣言パターン、 あなたが呼び出している時ということです 関数やメソッド それは実際の英語のように聞こえるでしょう。 だから、非常に直感的だ あなたがそれに入るに一度。 特にこの場合、 どこで基本的にすることができます 関数名があることがわかり ソートの自体を文書化する。 あなたがいずれかを必要としない より詳細な説明を確認します 正確に何が起こっているのか、どのような 正確に一つのパラメータは、やって。 それを超えて行く、それでは少し話をしましょう オブジェクト指向プログラミングについて少し。 オブジェクト指向プログラミングで 基本的なプログラミングの1 ある技術やパターン 客観C. Objective Cので使用される Objective Cの、ではないと呼ばれている C、本当に正当な理由のために。 だから我々は入る前に、 Objective Cの構文、 それでは本当にすぐに見てみましょう オブジェクトが正確に何である。 我々は、おそらく何かをやった 、前のオブジェクトのようなもの あなたは、構造体と呼ばれている ツリーやリンクリストを実装する または[?てみてください。 ?]だから、それはだ 基本的に構造体のような、 それははるかに強力に比べてだ。 オブジェクトは、メソッドとプロパティを持っています。 方法は基本的な機能である。 基本的に機能する 特定のオブジェクトに固有。 とプロパティは基本的に フィールドには、構造体で指定する。 一つ一つのオブジェクトに対するだから、 我々はいくつかのプロパティを持っている それはいくつかの変数を持っている オブジェクトに固有のものです。 そして、我々はいくつかの機能を持っている また、オブジェクトに固有のものです。 と関数はメソッドと呼ばれ と変数はプロパティと呼ばれます。 それはちょうど空想名前です。 あなた事実ながら、一つ一つのビュー あなたがiOSアプリを開いている間は、参照してください。 ちょうどTwitterまたはFacebookの言わせて、 あなたが見るすべての単一のビューがオブジェクトである。 とにも全体のアプリです で開始するオブジェクト。 非常に興味深いコンセプト。 そして、なぜ我々は、オブジェクトをしたいです 指向プログラミング? だから、ときにすることを想像することができます プログラムは、それはかなり複雑になります。 ちょうどあなたがいるときに言ってみましょう チェス盤を実装 ロジックがしようとしている 本当に複雑である。 あなたは、36種類を持っている ピース、その場合ので、あなた すべてのロジックを書きたい チェスで36の異なる部分、 それは多くのことになるだろう 別の関数や変数。 それは多くの問題だ。 おそらくあなたは書くつもりだ 別の方法または異なる機能 への作品のそれぞれについて、 正確に彼らが何をすべきかを制御します。 しかし、あなたがオブジェクト指向ない場合 プログラミング、これらの作品のすべて に抽象化することができます 1つのオブジェクト。 その目的は、いくつかの一般的なを持つことになります 作品のどのような種類のような特性、 それを何ですか? それは何色ですか? それはどのように移動することができますか? そして、あなたが持っている方法で、大いに それの論理を簡素化。 だから、本当に良い方法だ 複雑なプログラムを作るために、 と階層関係 プログラム内で、非常にシンプル。 私たちは見ることになるだろうとして なぜ非常に迅速にするとき 私たちは実際にやっている 私たちが実際にいるときprogramming-- Sコードを実行 その後のセッションをプログラミングする。 そのウェルに加えて、 オブジェクト指向プログラミング 楽しいだけたくさんある。 あなたは、独自のオブジェクトを設計することになった。 あなたは何を設計することだ それは自分でのように見える。 それへの正しい答えはありません。 そして、それは完全に興味深いです。 だから、オブジェクト指向プログラミングにおいて、 2基本的な概念 クラスとインスタンスになります。 クラスは、基本的に オブジェクトのテンプレート。 そして、インスタンスは基本的に 1特定のオブジェクト。 ちょうどあなたがクッキーを作っているとしましょう​​。 この場合は、一つ一つの あなたが実際に終わるクッキー 対象になるだろう。 しかし、あなたが使用するクッキープレートが焼く すべてのクッキーは、クラスになります。 クラスは、基本的にはテン​​プレートです。 とインスタンスは、1つの特定になります そのクラスから作成されたオブジェクト。 そして、インスタンスが作成されます クラス宣言に基づいて、 我々は後のスライドで見るように。 それでは、実際に本当にやらせる 簡単な例[聞こえない]。 のは、我々は宣言しているとしましょう 猫のためのオブジェクト。 オブジェクトはhave--必要があります Catクラスべき いくつかのプロパティとメソッドを持っている。 プロパティべきはどのような クラスがhave--猫が持っている必要がありますか? 例えば、色、 年齢や品種、それら 変数になるよう 各ネコに固有のものです。 そして、それらはいくつかのものである 私たちは猫を記述するために使用すること。 方法はどのような、 または猫は何ができるのでしょうか? いくつかの簡単な例はチェイスになる マウス、魚を食べるか、単にニャー。 これは本当に速いです 猫のクラスの例。 そして、実際に具体的な 猫のオブジェクトは、猫になります 私たちは、指定場所 色、年齢や品種。 その場合には、私たちの目的である もはやクラスもはや。 私たちは、クラスからテンプレートをコピーし、 私たちは、それぞれの特定の情報を指定する その特定のオブジェクトへ それは独立したようにします。 そして、あなたが呼び出しているとき オブジェクト内のメソッド、 あなただけのオブジェクトで鳴き声を呼び出し、 その作成したばかりの猫です。 おそらく、あなたがプリントアウトされます Hello World」のようなもの! ニャー。 " かなりかわいい。 すべての権利、ちょうどしてみましょう いくつかの詳細に入る 正確ことを何を参照してください。 iOSのプログラミングであることにつながる。 だから、iOSのプログラミングですべての単一 クラスは、2つのファイルに実装される。 1つのファイルは、ここにある インターフェイスと呼ばれている。 別のファイルは、ここにある 実装と呼ばれている。 通常、インターフェース extension.hを持つことになります 我々は、Cライブラリで見てきたように。 と実装ファイルです extension.nを持っているつもり。 それは奇妙なのようなものだ。 しかし、誰があり、.C実際に.Nを意味します それらの間の根本的な違い 2。 この場合には、私たちがしていることがわかります オブジェクト:インタフェース、猫を宣言する。 これは、継承と呼ばれている。 私たちは、基本的に継承している オブジェクトクラスから猫のクラス。 だったので、すべてのプロパティとメソッド 以前にオブジェクトクラスで定義されている 自動的に定義されます 猫のクラスでも同様。 それに加えて、我々は色を定義する、 品種、年齢、三つの変数。 それは実際のように見える あなたが前に行っているもの。 これは、構造体のように見えます。 つまり、基本的には構文です 構造体宣言のために、 そしてそれは完全に正しい。 そして、私は前に述べたことから、 違い構造体 物体の一 根本的な違い オブジェクトは、メソッドを有することで、 構造体は、変数のみを有している。 特性に加えて、またはそのように 我々は、オブジェクトのために作成した変数、 我々はいくつかの方法を指定します。 ちょうど私たちが持ってここにしましょう 二つの方法、1はニャーで、 別の1はチェイスマウスである。 我々は、おそらく渡ししたい 私たちの以前の方法に基づいてパラメータ 宣言パターン。 おそらく、マウスを渡すようにしたい。 そして、あなたはおそらくしたいと思う 意味BOOLを返すために あなたの猫は正常に持っている場合 マウスを捕まえたりしない。 これはインターフェイスですが、我々はできる 実際にインタフェースがわかり 何もしない。 それはちょうど何exists--プログラムに指示します 何が猫のクラスに存在する。 だからためには 何かをするためのプログラム、 我々は、実装ファイルを持っている必要があります。 だからここ、私たちが最初にすることはある 明らかに、我々はインターフェイスをインポートします。 我々は、インタフェースをインポートした後、 我々は、メソッドを定義します。 ちょうどここでニャーとしましょう 単にプリントアウトするだろう "こんにちは世界!"コンソールに。 そして、実施後 ファイルは、我々はかなり完了です。 これは基本的なクラスです 1クラスの宣言。 だから今の質問は、になる どのように変数を宣言しますか? あなたが作成するクラスを使用する方法 Objective Cの中のオブジェクトがここに書かれている。 あなたが最初にそれを指定する これは、猫のポインタである Objective Cの内のすべてのオブジェクトのため 最終的にはポインタとして実装されています。 そして、あなたはそれらを呼び出す、クラスを呼び出す 基本的にはmallocでのalloc、として、 あなたのオペレーティングシステムに伝える このオブジェクトのためのいくつかのメモリ空間を必要とする。 その後、オブジェクトを持っている すでに、あなたはそれを初期化する。 これは単なる慣習である。 私はそれが少し奇妙です知っているが、 これは、Appleがものをどのように実際です。 プロパティをされている割り当て 実際にはかなり簡単。 それは非常によく似ています あなたは時何をやっている あなたはいくつかの特定を割り当てている 構造体の内部にフィールド。 あなただけの変数を持っている 、プロパティ名に名前を付け、 そして、それに特定の値を割り当てる。 そして、メソッドを呼び出すと、非常によく似ています。 呼び出し方法がある 基本的に私は何の話 客観C.内の任意のメソッドを呼び出すための あなたには、オブジェクトを渡している この場合は、それがmyCatになるだろう、 あなたがメソッド名を渡している。 あなたがオブジェクトに話しているかのように、 あなたがニャーすべきmyCat、。 それはかなり面白いです。 その後、ものがある より本質的なデザインパターン 我々はについて話をする必要があること 実際のSコードを取得する前に。 そのデザインパターンが呼び出されます イベントには、プログラミングを駆動。 これはおそらく、ほとんどの一つです iOSのプログラミングの基本的な考え方。 だから、あなたはおそらく正確に何を知らない イベント駆動プログラミングは、ある しかし、それは本当に怖いではありません。 さて、実際には、あなたが持っている すでにその前にやっ。 これはおそらく、あなたがしたラインの一つである すでに最後の[聞こえない]で書かれた CS50の、 google.maps.event.addListener(マーカー、 、「クリック」機能(){}):. あなたはこの行を呼び出すことによって、 基本的にコンピュータを伝える イベントが呼ばれるたびに、その 、マーカーで発生する「クリック」 その関数を使用します。 これは非常に異なっている あなたはmario.cに何をすべきか。 mario.cであなただけのプログラムを実行する 一度、それはあなたの出力が得られ、 とすれば完了です。 これらは、一種のようなものです ワンショットプログラム。 イベント駆動型プログラム 非常に、非常に異なっている。 Facebookが1であれば、の想像してみましょう ショットプログラムは、それが本当に良いではありません。 あなただけのFacebookへ行く 一度、それを行っています。 それはあなたにいくつかの出力を提供します あなたが戻ってそれをやったことがなかった。 あなたはより多くの何かをやったことがなかった。 だからここに、特に 我々が使用するパターンがある イベントドリブン、その結果 すべての機能します 何に基づいてキャッチする イベントが起こった。 たとえば、私たちは持っている場合 ボタンと私たちのように指定 そのボタンがクリックされるたびに、その、 呼び出された関数呼び出しの "Hello World!」を 私たちは本当にできる方法で 機能ロジックを管理する 非常に柔軟な方法で流れる。 ユーザーが行うか、関数を呼び出すことができます それは既に呼び出されている。 これは、完全に、ユーザーが何をすべきかに基づいている。 だから我々は、これがあることがわかります mario.cより実際にはるかに良い。 そして、良いニュースは、それがあるということです 実際にはない新しいコンセプト。 君たちはすでに行っている 最後の問題セットでその。 だから、Objective Cの中にあります 三つの異なるダイアグラム イベント駆動型プログラミングのために。 最初の図である ターゲットアクションと呼ばれる どこでボタンをバインド いくつかの機能を備えたプレス。 あなたがクリックしたときにちょうど、言ってみましょう いくつかのボタンを押すと、いくつかの関数を呼び出す。 これは非常に単純なターゲットアクションです。 第二のものである 実際に最も困難な1、 それは、プロトコル上の委任と呼ばれています。 私たちは説明するつもりだ 非常に詳細では後ほど。 そして、第三の方法は、通知です。 これは実際にはありません 非常に重要な限り 私たちはチャンスので、心配しているように あなたは、通知を使用するつもりだこと あなたの最終的なプロジェクトではかなり低い。 だから我々はその部分をスキップするつもりだ。 そして、私たちはダイビングをするつもりだ プロトコル上の委任に。 だから、正確にプロトコルは何ですか? または委任は正確に何ですか? ので始まるするプロトコルについてお話しましょう​​。 プロトコルは、イベントに過ぎない。 しかし、これらのイベントが与えられている アップルによるあなたが開始します。 例えば、私はないんだけど あなたのどのように多くの完全に確認してください 男はAppleのオリジナルを使用 アプリのメールや連絡先、 しかし、すべての時間は、あなたがスクロールする テーブルと特定のセルを押してください テーブルの上に、それはイベントです。 そして、あなたがしたい場合は、 自分でそのイベント、 それは実際には少し難しいです。 だから、アップルも、あなたにそれを与えている あなただけの直接使用できるように、 自分で何かをするイベント。 プロトコルは実際にある 本当に、本当に広く使用されている で客観C.さてで 事実、一つ一つのアプリ 何かがアプリのデリゲートをキャッチしています。 繊細な内部の全てです アプリをロードするためのプロトコル。 ちょうどそこにあるとしましょう このアプリのためのイベントは、負荷をしました。 あなたがしたら何が起こるべき あなたがアプリを開いた後、アプリを作成し、 あなたがアプリを閉じた後に、または後に あなたがスリープ状態にiPhoneを置く。 これらには、持っているすべてのイベントです すでにあなたに与えられて。 そして、もともとこれらの粒子内部 全く実装は存在しません。 Appleは、この機能があることを語った いくつかのイベントが発生したときどうなる、 しかし、あなたはそれで何をすべきか 機能は完全にあなた次第です。 代表団は、基本的に クラスを伝える あなたはこれらのプロトコルを処理する必要があること。 それは少しだ 紛らわしいが、それは次のようになります 我々が行うときより明確に アクション中のSコード。 プロトコル上の委任は実際にある ある意味で非常に堅牢なメカニズム 我々は委任を行う場合 特定のクラスに、 私たちは本質的に処理することができます イベントのすべての種類 我々が持っている任意のクラスを使用して、 非常に便利なツール。 だから、1簡単な例のために プロトコル上の代表団 私は話を何になります。 このプロトコルは、具体的に呼び出され のTableView [聞こえない] [役割 [で?インデックス?] [?過去。 ?]だから、これAN あなたキャッチされることになるイベント 実際に具体的なタップ あなたのTableViewのセル、 ちょうどあなたのメールにしましょう または連絡先アプリで。 関数内であった もともと何もしない。 機能にはありません デフォルトでは何でもする。 しかし、あなたは指定することができます 関数が何をするか、 あなたのアプリから欲しいものを与えられた。 非常に便利なツール。 そして、すべてのそれと 私は基本的に、言われている いくつかの非常に基本的な構文をカバーし、 Objective Cのための基本的な考え方 プログラミング、我々はいくつかのコードを行うことができます。 さらに多くのエキサイティング。 そのように複数のコードは、実際に 少し圧倒 あなたが初めてそれを開いたとき。 One簡単なメモなので、あなたの場合 iOSの開発をやってみたい、 私は非常にあなたは、Macを持ってお勧めします。 上のiOS開発を行っているため Windowsは、本当に、本当に難しいです。 それはなんとかだが、それは本当に難しいです。 そして、あなたは間違いなくやる G編集を使用したくない。 だから、Sコードで、我々は持っている いくつかの異なる領域。 あなたが最初の開くコード あなたはナビゲーション領域が表示され、 これは基本的にあなたのすべてを示して あなたの現在のプロジェクト内にあるファイル。 あなたは、ツールバー領域を、持っている 基本的にビューを管理している、 またはいくつかの小さなクイック Sコード自体についてのツール。 これは、実際のエディタ領域である。 このエリアは非常によく似たG編集で、 しかしG編集よりもはるかに良い。 そして、この右の領域においては、 ユーティリティエリアと呼ばれる。 エリアは、時本当に便利になる あなたがインタフェースを作成するか、指定している あなたのアプリのためにいくつかの簡単なセットアップ。 そして、最後のエリアは、デバッグです。 このエリアには、コンソールが含まれています。 ですから、printfの言うたびに、 または、我々の場合のNSLog すべての結果は つもりはここで印刷される。 大丈夫? 私たちは本当にすぐに行うことができます推測 iOSのプログラミングのための例。 そして、それでは実際にSコードを開いてみましょう。 だから、あなたはSコードを開くたびに、それはだ そのようなものを表示する予定。 それはあなたを尋ねるために起こっている 何をしたいですか? あなたが何かを起動しますか 基本的にはランダム、遊び場、あなた ちょうどずにコードをテストすることができます 実際にアプリにコミットする。 新しいプロジェクトを作成しますか? または、続行しますか 既存のプロジェクトに取り組んで? 我々のケースでは、つもりだ 新しいプロジェクトを作成します。 だから、、S、本当にうれしいです コー​​ドは実際にはすでにあります あなたはいくつかのテンプレートが与えられた オブジェクトを作成するため。 あなたがゲームをやってみたい場合は、コードをよ 実際にあなたのためのゲームのテンプレートがあり、 ページベースのアプリケーションを持って、 タブベースのアプリケーション。 このケースでは、つもり 非常に簡単な何かをする、 私たちは使用するつもりだ 単一のビューアプリケーション。 その後、あなたが呼び出したいだけで何 お使いの製品が、そして、あなたの名前は何ですか あなたの識別子は、何だと あなたはどのような言語を使っています。 ここではしたくない コアデータを使って確認してください。 Core Dataは、基本的にデータベース化iOSのです。 あなたがコアデータ、Sを行う場合 コー​​ドを定義しようとしている あなたのためのより多くの複雑なクラス。 だから、単純なすべてのものを維持するために、我々はしている ちょうどコアデータなしでやろうとして たった今。 私たちがあることを行っている問題 使用することは問題that--です 私たちは、作成されようとしていること、私たちです 基本的にはCからマリオをインポートしたい iOSアプリに。 それでは、マリオ·iOSのことを呼ぶことにしましょう​​。 もちろん、あなたが何を指定する あなたのプロジェクトに入れたい。 そして、そこに私達は行く。 だから、これは少しある 圧倒的な、しかし、これは実際には 私たちはただのスライドで見た。 そして、我々は今、最初に表示エリア 基本的には、プロジェクトの構成です。 あなたがしたいので、すべてのもの プロジェクト、デバイスの種類、 ちょうどデバイスの種類としましょう あなたのアプリ上に表示されたいですか? それは、iPhone、iPadやユニバーサルですか? そのため、デバイスの向き、すべてのこのようなもの。 あまり重要ではない、 そうであるが、この可能性 あなたが設定する場所です あなたのプロジェクト実際にあなたの場合 アップルストアに展開する。 すべての権利、見てみましょう 私たちのコードの中にある何か。 それでは、ファイルナビゲーター見ていきましょう。 これらは、すでにすべてのファイルです 非常に素晴らしい、テンプレートに付属している。 だから我々はそれらのいずれかをクリックすると、 これは、それがどのように見えるかです。 G編集に非常に似て。 しかし、あなたがいることがわかります シンタックスハイライ​​トは、おそらくです 少しよりよい。 そして、それは実際にはるかだ G編集より強力な。 そして、あなたは、自動完了することができます あなたのために多くのこと、 我々は非常に迅速に見るように。 のは、同様にデバッグする領域を開いてみましょう。 すべての権利、私たちが見ることができるように、 コンソールはここです。 これは、あなたが場所を確認しようとしているものです あなたはprintfのか何かをnslogingにいる。 だから、さらに苦もなく、実際にしてみましょう アプリをコンパイルし、何が起こるかを参照してください。 するための一つの基本的な特徴 複数のコードは、その複数のコードである iPhoneシミュレータが付属しています。 だから、持っている必要はありません あなたのプロジェクトをしようとするiPhone、 Sコードは、のためにそれをシミュレートすることができます あなた、私たちは今、見ることができるように。 それはかなりいいです。 それは少しを取っている コンパイルする時のビット と基本的に私たちは持っている 空のアプリケーション、 その実際に何もしません。 しかし、それはコンパイルされます。 それはかなり素晴らしいです。 それは、ハァッCよりもはるかに良いの? その後すべての権利、レッツ 何かを追加しよう。 少しはある一つのファイル ここに奇妙なはストーリーボードと呼ばれている。 これは、実際に大きい Sコードのための素晴らしい機能。 Sコードでは、あなたが実際にドラッグすることができますので、 インターフェイス上に要素をドロップ それが直接表示されます。 のはそれを試してみましょう。 私たちは、ここでの "Hello World !!!"ラベルをドロップ 我々はそれを中心にすることができます。 かなりクール。 それでは、この停止シミュレーションを実行してみましょう。 ここでは、「Hello Worldの!!! "持っている 私たちも、まだコーディングをしませんでした。 一体は何が起きているのですか? これはどのように強力です Interface Builderはすることができます。 誰かがさえていることを言った あなたができるおそらく ライトせずにアプリを完了 おそらく、コード1000行 ただI​​nterface Builderのを使用します。 しかし、それはおそらくありません それを行うための最善の方法。 それでは、実際にコーディングに取り掛かるてみましょう。 ファイルの構造だから、 実際に本当に面白いです なぜなら、あなたが見る可能性がある、そこに どこにも主な機能はありません。 参照してください? 前に述べたように、 あなたはこのことを確認できます 実装ファイルです 特定のクラスのために。 しかし、誰メインのどこがありません。 だからここで主なのですか? 実際には、そこにメインですが、 主が実際にあなたから隠されている。 メインはこちらです。 それはお馴染みに見えます。 そこで、基本的に何のiOS メインの内側にやっている いつでもメインであることである 基本的にはある、と呼ばれる アプリは、それを実行されるたびに AppDelegateと呼ばれるオブジェクトを作成します。 私は前に述べたように、全体 アプリは、それ自体で実際にオブジェクトです。 基本的に、このようにそのように iOSアプリは、コンパイラを語っている そのOK、私が作成するつもりです AppDelegateと呼ばれる製品、 それは私のアプリになるだろう。 だから、行く必要がある そのAppDelegateを通して そしてその男はやっているかを見る。 私の仕事は私のために行われます。 そして、AppDelegateにあなたはそれを見ることができます いくつかの本当に奇妙な関数があり、 よく、実際に方法は、 Appleはすでにあなたを与えている。 これは何? これらは、実際にはプロトコルです 私が話していたことを。 したがって、これらはそのアップルイベントです で開始するあなたを与えている。 何もいくつかではありません 今の機能が、 しかし、我々は初期化したい場合は、 我々のアプリのために何か 表示に入る前に すべてのビュー、我々はここでそれを行う。 あなただけの名前を読むことができると私は推測する イベントは、実際には本当に明確である。 だから今メインで作成しています AppDelegateのためのオブジェクト。 そして、何AppDelegateは何をするつもりされている 実際にも、あなたから隠されている。 AppDelegateが起動しようとしている のViewControllerの在庫をロードする。 だから、基本的に開始する予定だ あなたが持っているすべてのビューをロードする ちょうどビューをレンダリング 階層に基づいて。 この場合には、我々は唯一持っている ここにある一つのビュー、。 だから、唯一の図である それが呼ばれるようになるだろう。 のViewControllerロジックはここです。 これは実際のコードです 我々だけで見たビューを制御します。 すべての権利、のがここで何かをしてみましょう。 だから、viewDidLoadのは、イベントのように聞こえる、 実際にはこれはデリゲートである場合、 これは、プロトコルです。 だから、どのようなビューがロードされ、 関数内ですべてのもの 呼び出されます。 このケースでは、ハロー」を参照してください必要があります 天城! "我々はプログラムを実行した場合。 それは少し遅いなってきた ストーリーボードファイルをコンパイル。 さて実際に、我々はそれのために出力が表示されません。 それはかなりクールだ。 それでは、実際にマリオをやらせる。 私が定義するつもりです 非常に迅速に機能します。 marioWithLevels:(INT)レベルの結果。 すべての権利、これは実際に素晴らしいです Sコードの自動補完の機能。 だから、あなたが書いて入力する入力すると、 それは既にテンプレートを与えている あなたのために、かなりクールである。 それは本当になるはずです 皆さんに馴染み。 申し訳ありませんが、それは私のせいです。 すべての権利、涼しい。 そのロジックは本当におなじみのはずです あなたたち、特にちょうどマリオへ。 しかし、我々は今にプリントアウトします コンソール毎回、 我々は何とか維持したいので、 我々が印刷しているもののトラック。 私たちは、使用するつもりだ 何とか後で結果、 プリントを表示するには 外のユーザーになる。 だからではなく、我々だけだ すべてをnslogging、 我々はすべてを保存しているもの 関数呼び出しの結果に、 しかし論理はまったく同じです。 私たちはそれを終了した後、我々 ちょうど私達の結果を印刷する。 そして、ここではなく、私のプリントアウト 名前は、私たちは関数を呼び出すするつもりだ。 何が起こるか見てみましょう。 おっと、明らかに。 我々は素晴らしいを持っています 外ここで少しピラミッド。 これは基本的にCで、我々だけだ どこで関数を呼び出す操作 とどのように機能は次のようになりません。 別のものは何もありません。 しかし、これは実際にある ここでは非常にエキサイティングではない、 私たちは見ていないので、 iPhoneアプリから何か。 だから、実際にapp-- iPhoneを持っている場合 あなたが実際にマリオのiOS権利を持っている場合 今、あなたがつもりはない その何かを見るために ので、マリオとは何を持って コンソールにすべてのそれらの出力 ユーザーから隠されている。 これは、あなたが見るものです これの "Hello World!"です 良くない。 今度は、ユーザーが表示するために試してみましょう まさに私たちがプリントアウトしている。 だから我々はもうラベルを付ける必要はありません。 それでは試してみましょうと、何かを把握 有用である可能性、他。 1は実際にあります と呼ばれている要素 テキストフ​​ィールド、できた 私たちに非常に役立つこと。 それは基本的に地域を表示 テキストを編集することができる。 だから、本当に便利になります。 今度は、それをドラッグ&ドロップしてみましょう。 うわー、私たちはテキストビューを持っている 我々の見解で、本当に空想。 それは少し大きすぎる。 のは、それが小さく作ってみましょう。 中央にそれを入れてください。 同様にそれを小さくする。 今、私たちは、テキストビューを持っている我々はできる 我々の最終結果を表示するために使用する。 しかし、今、それはだ 確かに仕事に行くのではない no--があるので ViewControllerをちょうど私達 ことを認識していません定義された そこにテキストビューがあります。 だから我々は何とかする必要が テキストビューをリンク我々だけ そのクラスを使用して作成 すでに私たちと一緒に来ている。 私たちはそれを行う方法です 実際に本当に魔法。 だから、ストーリーボードを開く。 ある特殊な[聞こえない] [と呼ばれる?アシスタント?] [聞こえない]。 あなたがそれをクリックすると、それはだ 二つのファイルを開くに行く。 一つのクラスであり、他方で それに対応する図である。 それは非常に、非常に便利です。 そして、ちょうど.hファイルを通過してみましょう。 制御は、これは[聞こえない]論理である。 プレスコントロールとドラッグ 宣言へのテキストビュー。 私たちは、そのoutputViewを呼ぶつもりです。 接続します。 そこでここでは、新規に宣言している 私たちのViewControllerクラスのプロパティ。 そして、新しいプロパティ 単なるテキストである 我々は、インタフェースの建物内に作成しました。 そのように私たちができるよう アクセスのすべてのデータ 内部ですべてを操作する 驚くばかりである出力ビュー、。 だから私たちの実際のコードで、 のはそれで何かをやらせる。 我々は、印刷のようなものですので、この時間 マリオのための最終結果から、 我々は何をログに記録しないでね。 私たちは保つことができることを意味 loggingステートメント。 それに加えて、我々 読み出しを送る我々だけ 出力ビューに作成し、その 先ほど作成したのTextView UIです。 それでは、何が起こるか見てみましょう。 うわー。 私たちは今、アプリでピラミッドを持っている。 だから、ユーザーがいるので私たちの出力を見ることができます 私たちは私たちのコードからの出力をコピーした 我々のインタフェースに関する。 それはかなり良いことだ。 それは実際にそのではありません 我々はcan--ためエキサイティング すべてのアプリがされてやっている あなたにピラミッドを示す、 そしてあなたがそれについてできることは何もありません。 それは特にエキサイティングではありません。 だから今のボタンを作ってみよう それは、ビューがクリアされます。 ボタンが参考になると思われます。 ドラッグアンドドロップ。 ボタン1。 ボタン2。 だから我々は、左をクリックしたとき ボタン、ビューはクリアする必要があります。 画面上の何もないはずです。 そして、我々はクリックしたとき 右ボタン、マリオ、 ビューが再び表示されるようになるだろう。 だから、このように私たちもやる 魔法のようなもの、コントロールしてドラッグ クラス宣言へ アシスタントでdirector-- アシスタントビューアで。 このケースでは、指定している それは行動する必要があること。 clearMario。 そこでここでは、既に作成している clearMarioと呼ばれるアクション、 コー​​ルされる方法がある 私たちは、クリアボタンを押すたびに。 だから私たちの実際のコードで、ちょうどしてみましょう 出力テキストおよび出力ビューを置く 何に、とそのように それは明確にすることが表示されます。 それに加えて、の作成してみましょう runMarioと呼ばれる別の方法。 ああ申し訳ありませんが、それは財産であってはならない。 すべての権利、すべきである 同様に行動すること。 そして、その関数があるとき と呼ばれる、私たちはマリオ10を実行します。 うまくいけば、それは問題になります。 それは、コンパイルしていますか? はい。 今、私たちは、ビューを持っている。 我々は出力を持っている。 そして、ちょうど何が起こるか見てみましょう。 それは逝ってしまった。 それは、再びです。 そこでここでは、指定されている 関数の種類を ときに呼び出される 私たちは何かを入力、 私たちは、特定のボタンを押したとき。 これは基本的に ターゲットアクションスキーム イベント駆動 客観Cでプログラミング それに加えて、 それは非常にエキサイティングではありません 私たちは本当に変更できないため、 ピラミッドはどのように高くなり、 私たちは、おそらく何とかしたい ユーザからの入力を受ける との高さを変更する 彼らは何の出力に基づいてピラミッド。 だから我々はそれをやろうとしている。 だから我々はrunMarioを呼ぶこの時、 私たちは直接マリオを呼び出すことはありません。 この1のタイトル。 デリゲート。 これは非常に興味深いです。 デリゲートとは何ですか? 私はここに自己を置くつもりです。 そして、私たちは見ることになるだろう 何それは後を意味します。 そこでここでは、基本的に作成している UIの警告と呼ばれる特定のインスタンス ビュー。 UIのアラートビューがある 基本的に何をでしょう 毎回何かポップを参照してください。 アップと入力をお願いします、 あなたがしようとしている時に何が起こるかのような アプリストア上で何かを購入する。 それに加えて、あなたの後に それを作成し、私たちは、アラートが表示されます。 すべての権利、ちょうどすぐにしてみましょう テストは、その仕事やしません。 それは非常にクールだ。 それでは、実際に作成してみましょう UIの警告のための入力フィールド。 これは、我々はそれを行う方法です。 そして、我々は持っている必要があります アラートの入力ビュー。 非常にクール。 ちょうど10を言ってみましょう。 それは右の何もしてないです 今実際にあるため、コール マリオを実行するための変化しなかった。 だから、これは少しになりました ビット奇妙なときはいつでも理由 私たちは、いつでも私たちを下のボタンを押してください アラートビューにボタンを押すと、 何かが起こるはず、 それは起こりません。 我々はそれをどのようにキャッチしますか? どのように我々は、ユーザがいることを知っている アラートビューを却下した すでにので、番号を入力 今は何も、実際には起こっていないだ。 さて、あなたは推測しているかもしれません それは右、委任。 すべてに加えてそのように これらの宣言、 私たちは、新しい委任を追加する必要があります それは、UIのアラートビューのデリゲートと呼ばれる。 一つ一つのように、 相互作用またはイベント 我々は、必要があるとしていること UIアラートを望む 処理されようとしている 同様に私たちのクラスによる。 だから、それに加えて、となります アラートビューは、インデックスのボタンをクリックします。 これが達成される。 だから、その場合には、我々は持っている already--私たちは持っている プロトコルを見出し、その ときに、イベントを処理します 私たちは、[完了]ボタンをクリックします アラートビューに。 だから、毎回私たちは却下 アラートビュー、これは起こるべき。 私はちょうど非常に迅速にそれをテストしてみましょう。 さて実際に、私たちはここに達しています。 だからここに、私たちはしません 実際に実際に取得 だから我々は取得したいthe--取得 我々は以前に持っているテキスト アラートビューに入った。 また、テキストに基づいて、私たちはしている マリオを表示しようとして。 これは非常に迅速に判明 それが実際に動作するかどうか。 だから、その場合、私たちは入力の場合、 私たちは10が表示され、10、の言わせて。 非常に良い、私たちはここ数を持っています。 それはかなり良いことだ。 今、最後のステップはそうbe--ます 我々が今行う必要がある最後のステップ ただでマリオを呼び出している レベル入力に基づいて 私たちは、アラートビューに入れていること。 だから我々は変換する必要があります iOSの中にこの文字列。 静的オーバーフローは非常に素晴らしいです。 そして、私たちは自己を呼ぶ marioWithLevels値。 のは、その意志を見てみましょう 実際に仕事をしたりしない。 我々はすでにピラミッドを与えられている。 の高さを変更してみましょう。 それは実際に動作します。 それはかなりクールだ。 今あなただけのことができるように、 入力したい任意の値。 ちょうど4を言ってみましょう。 これはかなり素晴らしいです。 だから、これは基本的に 本当に簡単な例 のためのSコードでプロジェクトを作成する方法 と本当にすぐに配線方法 いくつかの本当にシンプルなイベントと関数。 だから、ソースが起こっている 後でオンラインにする。 だから、もし興味があるなら iOSのマリオがどのように動作するかで、 私は全く同じに置くつもりだ 後でCS50のウェブサイト上にプロジェクト。 私たちは基本的に作業は終了です 夏、私たちは仕上げの前に 私はちょうどにあなたたちを指すようにしたい いくつかの本当に素晴らしいリソースその オンラインで入手できます。 明らかに、アップルのドキュメント 非常に参考になるだろう。 しかし、それに加えて、私は特に 、4のソースコードの学校をお勧めします ツリーハウス、AppCodaとWWDCビデオ。 コー​​ド学校やツリーハウスです 2オンラインの教育のウェブサイト、 を特異的に焦点を合わせる ソフトウェア工学に関する。 特に、コードの学校のために、彼ら iOSの上で本当に良いチュートリアルを持っている。 それはそれのために本当に簡単な例である。 彼らは実際に本当にcute--を作成 その小さなかわいいiPhoneを見て あそこ男は、それはかなり素晴らしいです。 彼らは目的を説明し、道 Cの構文は完全には明らかである。 ツリーハウスは同じです。 そしてAppCodaはフォーラムです。 これは、実際に実行されたブログの 本当に経験豊富なObjective Cのことで プログラマ。 そして、AppCoda内のすべてのもののチュートリアルがあります かなり短いと簡単に実装でき、 強くお勧めします。 そして、あなたが開発者なら、 間違いなく見に行く どのようにWWDCのビデオをどこにすることができます 最新のiOSプログラミングについて学ぶ 技術、APIとライブラリー。 だから、ほとんどです セミナーのためにそれ。 どうもありがとうございます。 そして、私はあなたが楽しみを持っている願っています あなた自身のiOSアプリを作成する。