2010年05月06日
Objective-Cに関わる言葉 @ iPod touch
随分昔に一度Objective-Cをやろうとした時にもはまった部分。それはObjective-Cの概念というか、もっと簡単に言えば言葉がよく分からなかった。
iPhoneアプリを作り始めてからも、実はその辺の考え方がイマイチ分からず、モヤモヤしたままに、機能の確認やサンプルを試して勉強し居る状態が続いていた。
簡単なところで言えば、ビューとコントローラー。この辺はすぐに理解出来る。時計で言えば、ビューが文字盤で、コントローラーが歯車。場合によってはコントローラーはモーターかもしれない。この辺のコントローラーをどれにするか示す事をターゲットと言えばよいかな。「この文字盤の(コントローラー)ターゲットは歯車だ」みたいな。もう少し追加すれば、この時計が、目覚まし時計だとすると、アラームの設定時間を保持しているところが、モデルって事かな。あまりMVCを明確に分ける必要のある仕組みを作った事がないので、正直この辺の自分の解釈はやや曖昧かも。アラームを設定すれば、アラームが鳴るわけで、そのアラームを止めるボタンって通常ありますよね。アラームが鳴るって部分は置いておくとして、止めるって行為には、ユーザーが操作するボタンがあり、それを押した時の挙動がコントローラーに用意したりしますね。これがアクションですね。
まぁ、ココまでは勉強を始めればすぐに理解出来る部分。問題はここから。正しい説明になっているか分かりませんが、今のところの自分の解釈を書いてみる。
先ずはデリゲート。代理処理とか、委譲とか説明されてますが、なかなか概念としてスッと入ってこない。言っている言葉は分かるのだけど・・・。で、もっと噛み砕いてみる。例えば、目覚まし時計というオブジェクトを使って、隣にあるラジオの電源を入れてみる。今まで目覚まし時計でセットしたタイマーではアラームを鳴らしていたのだけど、実行の部分をラジオの電源が入るという動きにしてしまう。この辺が代理処理(デリゲート)かなって感じ。
次はプロトコル。これはね。正直自分も説明難しいかも。まだ解釈が曖昧。要はオブジェクト同士のやり取りの規約がその物ずばりプロトコルなのだろうけど、そんな事は言葉の意味から推測出来る。今までの説明に沿った形で言えば、時計とラジオの間の通信部分の取り決めがプロトコルだよね。時計から電源を繋いでラジオの電源を入れる形(オーディオタイマーを使った様な状況)なのか、イーサやUSBなどもっと複雑な仕組みなのか、この辺がプロトコルなのかな。実際には電源ケーブルだったり、USBのケーブルみたいなところがプロトコルではなく、時計の中にプロトコルが必要なので、時計側に付いた電源コンセントだったり、USB端子や基板上のUSBコントローラーと言えば良いのかな。
ただ、プロトコルって書き方が
@interface MyObject : オブジェクト <プロトコル>
みたいな形なので、基本となるオブジェクトに、何らかの機能を追加したい時にプロトコルなのかなとも読めたり・・・。微妙に違う気もする。デザインパターンとかObjective-Cその物とか、詳しく書かれた本を買って勉強した方が良いかもなぁ。
オブジェクト指向って位だから多分、リアルに現実の物に置き換えて説明出来ると思うんだけどなぁ。ちょっとまだ理解が足らない感じ。もっと良い例えを思い付いたら書き直すかも。
関連日記
- 2010年03月16日 Adobe FLASH PLATFORM CAMP Tokyoの感想 (4126)@ Flash
- 2009年03月30日 書籍「Dynamic Objective-C」 (3480)@ iPod touch
- 2009年04月16日 The Essential Guide to iPhone Application Development for Flash Users (3148)@ iPod touch
- 2003年05月31日 Mac OS X Cocoaプログラミング (2990)@ Mac
- 2010年02月13日 CodeSign Error (2952)@ iPod touch
- 2010年05月21日 デリゲートの図 (2912)@ iPod touch
- 2010年09月17日 書籍「iPhone SDK 4 Advanced Programming」 (2839)@ 携帯電話
- 2011年05月04日 Adobe Photoshop Touch SDKとCS 5.1 (2838)@ Mac
- 2010年05月15日 Objective-Cの#importと@class (2717)@ iPod touch
- 2003年05月27日 今日もCocoa (2484)@ Mac
- 2010年10月25日 NSPredicate (2306)@ Mac
- 2012年10月13日 DoxygenのEXTRACT_LOCAL_METHODS (2083)@ Mac
- 2012年07月28日 Adobe Illustratorから形状のソースコードを書き出す (1966)@ Mac
- 2010年10月13日 悩ましいautorelease (1963)@ Mac
- 2012年08月20日 ゼロから5日でiPhoneアプリが作れる本 (1764)@ iOS
- 2014年04月05日 QBlocksはiOSアプリ開発用グラッフィック作成に便利かも? (1661)@ iOS
アマゾン広告
この日記ページは閲覧数などの条件に応じて、閲覧制限を行っています。他からリンクしていただいても、そのリンクから辿った閲覧者が当ページの内容をご覧頂けない場合があります。ご了承下さい。