それほどひどい質問ではないと思います。多くの人々が質問の「最良の」側面に否定的に答えました。簡単に言うと、「各種類のオブジェクト間通信に最適な状況」です。
要約すると、一般的なものは次のとおりです。
- 直接呼び出し(google Objective-C言語メソッド)-最も一般的で、最も直接的で、緊密に連携するオブジェクト。
- KVO(google "Objective-C KVO")-特定のオブジェクトが別のオブジェクトの特定の値の変化を観察するため。
- NSNotification(google "NSNotification")-任意の/多くの関心のあるオブジェクトが、別のオブジェクトがブロードキャストしたいイベントを監視するため
- デリゲート(google "Objective-Cデリゲート")-オブジェクトが他のオブジェクトに代わって作業を行う必要がある場合、デリゲートプロトコルを公開します。他のオブジェクトは、このプロトコルを実装して(「それに準拠」)、デリゲートとして割り当てることができます。(私の意見では、これは使いすぎです)
それぞれを実装する方法については、たくさんのWeb資料があります(詳細については、グーグルで検索してください)。