iPhoneアプリ作成までの道のり8

8. イベント通知の3つの方法

もう少しだけ知っておいた方が良いことがある。自分のアプリを設計するときに、Cocoa内でよく使われる3つのイベント伝達の仕組みを念頭に置いておくと良い。

    プロトコルデリゲートパターン ・KVO(Key Value Observing) ・NSNotificationCenter

単純にローカルオブジェクトを生成し、メッセージを送信する(他の多くの言語でいうところのメソッドコール)だけでは済まないような場合に、初心者は反射的に必要なオブジェクトをそのまま属性に持たせてしまう。また、多くの入門書のサンプルプログラムでは、紙面の関係でコード量を少なく済ませたい、あるいは初心者に分かりやすくという目的で、あるクラスに必要な別のクラスを、次から次へと属性に持たせてしまう傾向にありがちだ。そのやり方は一概に間違いとは言えないが、Appleの頭の良い人たちが、単純なやり方をもう少し発展させた設計パターンがあるというのも知っておいた方が良いだろう。

ここでは、3つの設計パターンの概要を簡潔に示す。
以降の章で、これらのパターンをより具体的に説明する。


プロトコルデリゲートパターン

これが3つの中で一番メジャーなパターンである。入門書のサンプルを組んでいるうちに何度も使っているはずだ。アプリケーションデリゲートもその1つだ。このパターンは主に、1対1のイベント伝達で頻繁に使用される。GoFの中ではStrategyパターンに相当する。

KVO

これはGoFのObserverパターンそのものである。Objective-CではNSObjectクラスにObserverパターンが埋め込まれているのである。主に1対1から1対Nのイベント伝達に使用される。

NSNotificationCenter

主にN対Nのイベント伝達において、イベントの送受信の仲介を行うのがNSNotificationCenterである。