「Interface Builder User Guide: Connections and Bindings」は「About Connections and Bindings」という節で始まっている。その冒頭では Mac OS X (と iOS) アプリで用いる「接続(connection)」の型についての説明がされている。
(「Interface Builder User Guide: Connections and Bindings」より)
There are four fundamental types of connections you can create in a Mac OS X and iOS application:
- Outlet connections
- Action connections (Mac OS X only)
- Event connections (iOS only)
- Bindings (Mac OS X only)
action と event がそれぞれ、Mac OS X 専用、iOS 専用となっているのは良い。iOS アプリで action の代わりを務めるのが event だから。気になるのは最後の Bindings が Mac OS X 専用となっていること。そう、Cocoa Bindings は iOS アプリでは使えない技術なのだ(少なくとも今のところ)。
Interface Builder で Inspector を見てみる
前回の記事(→「Cocoa Bindings の使い方 #2」)で、Cocoa Bindings を設定するための Bindings パネルのスクリーンショットを載せた。このパネルは Interface Builder でインスタンスのさまざまな設定を行うための「Inspector」とツールの一部として表示されるものだ(「Inspector」は Interface Builder のメニューから「Tools」>「Inspector」で表示できる)。この「Inspector」の中には、他にも Attributes や Size を設定するためのパネルが並んでいる。
この「Inspector」を Cocoa アプリの部品と Cocoa Touch の部品でそれぞれ表示させ、そこに並んでいるパネルの数と種類を比べてみた。改めて見ると、確かに違う。Cocoa の部品のパネルに比べて、Cocoa Touch の部品のそれは明らかに数が少ない。
設定するためのパネルがない以上、Cocoa Touch の部品では(つまり iOS アプリでは) Cocoa Bindings が使えないことは確かなようだ。
Cocoa アプリと Cocoa Touch アプリ
以前の記事(→「欲しいのはオフライン機能 - Cocoa アプリとして作り直す #0」)で、Mac 版と iPhone アプリでなるべく設計と実装を共通化したいと書いた。そのためにも、ビュー (V) とモデル (M) の分離が明確になる Cocoa Bindings はおもしろそうだと調べ始めたんだが、Cocoa Touch で使えないとは思わなかった (´・ω・`)。まあ、iPhone アプリのコントローラ (C) が少し大きくなる程度の差で済むと思うがね。
この制約はどうしてだろう? パフォーマンス? メモリ? KVC と KVO は iOS アプリでも使えるっぽいんだけどな(iOS Reference Library に両者の Programming Guide がある)。そう言えば、ガベージコレクションも iOS アプリでは使えないんだった。デバイスに差がある(あり過ぎる)以上、しかたがないんだろうな。
どうでもいいことだけど garbage collection のカタカナ表記としては「ガベージコレクション」と「ガーベジコレクション」のどちらが適切か? ググってみると前者は 130,000 件で後者が 67,100 件。ま、根拠にするには弱いけど、どちらかと言えば前者の方がポピュラーってことか。
関連リンク
- Interface Builder User Guide: Connections and Bindings (Mac OS X Reference Library)
0 件のコメント:
コメントを投稿