>> 天城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アプリを作成する。