13章オブジェクト間の通信

アプリ作成のためにオブジェクトの数を増やしていくと、オブジェクト間でメッセージをどのように送受信すればよいかわからなくなり、整理がつかなくなってしまうといった状況が起こりがちです。こうした状況に陥らないようにするために、アプリの「アーキテクチャ」をしっかりと考える必要があります。すべてのピースがうまくはまってジグソーパズルが完成するように、アプリ全体が構築できるのが理想ですが、それは優れた芸術作品を作るように大変な作業です。しかし不可能なことではありません。この章でそのための助けとなる事柄を紹介していきましょう。

コミュニケーションの問題は多くの場合、あるオブジェクトからほかのオブジェクトが「見える」かどうかの問題に帰着します。TaroというオブジェクトからHanakoというオブジェクトに対して、アプリの実行中にメッセージを送るためには、メッセージを送りたいときにTaroがHanakoを見つけられなければなりません。

単純な解決策としてはTaroのインスタンス変数を使ってHanakoを参照するという方法があります。この方法は、とくにTaroとHanakoが何らかの処理のために互いに補完する関係にある場合に有効です。アプリケーションオブジェクトとそのデリゲート、テーブルビューとそのデータソース、ビューコントローラとそれに制御されるビューなどは、前者が後者をインスタンス変数としてもつのが適切でしょう。

しかしこれは必ずしも(メモリ管理に関して)TaroがHanakoのオーナーとなるということは意味しません。オブジェクトは通常、デリゲートやデータソースを保持していません(オーナーにはなっていません)。同様に、UIControlなどターゲット・アクションのパターンを実装するオブジェクトもターゲットを保持していません。 ...

Get 入門 iOS SDK ―初めてのiPhone/iPadプログラミング now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.