あるオブジェクトから別のオブジェクトへイベントを通知したい場合、Delegate(protocol)かNotificationいずれかの方法で実装できます。どちらを使うかはケース・バイ・ケース。今回はその使い分け方について説明します。 ※ あくまで自分の経験則によるものです。 ここでのDelegateの説明はDatasourceも含むことにします。要するにprotocolで定義したメソッドを使ってやり取りする場合です。 Delegateを使う場合 通知を受けるオブジェクト(通知先)が1つだけである 通知元オブジェクトと通知先オブジェクトが緊密な関係にある 通知元と通知先の間で1つ以上のやりとりがある 通知元と通知先で相互的なやりとりがある より具体的に言うと 通信のように非同期処理を行い、その結果を受け取る場合 ViewControllerがSubviewからのイベントを受け取る場合 通知
![DelegateとNotificationの使い分け | Cyber Passion for iOS](https://cdn-ak-scissors.b.st-hatena.com/image/square/02552bde15f1ebb0decca19552fb781232f990f4/height=288;version=1;width=512/http%3A%2F%2Fblogios.stack3.net%2Fwp-content%2Fuploads%2F2015%2F04%2Fcyberpassion-logo-ogp.png)