NSuserdefaults に、フォント サイズなど、多くの (すべてではない) UIView オブジェクトのプロパティに影響を与える設定があるとします。設定は「メイン」ビューコントローラーから変更することもでき、UISplitviewController 内の UINavigationController 内の UITableView 内の UITableviewcell 内の UIView にある UILabel オブジェクトに「配布」する必要があります。
コントローラーとビュー階層のすべてのレベルでこのプロパティを作成し、親のプロパティが設定されているときにプロパティを設定すると、多くのコードが必要になります。Apple は、チェーンに沿って子コントローラーに渡して managedObjectContext を管理するために、このパターンを好むようです。しかし、これはやり過ぎのようです。多くのコードは、プロパティの値を渡すためだけのものであり、何も行われていません。ただし、このパターンを使用して、ビューのすべてのサブビューのプロパティを一度に設定します (すべてのサブビューを再帰的にたどることにより)。
デリゲートがトップレベルの親View Controllerである場合を除いて、デリゲートは同様に悪いようです。しかし、デリゲートをすべての子ビュー コントローラーに渡します。
代わりに通知を使用する必要がありますか? NSUserDefaultsDidChangeNotification を介して NSUserDefaults の (すべての) 変更をリッスンするコントローラーが既にあります。設定が変更されたときに、そのコントローラーは特定の通知を投稿する必要がありますか? その場合、誰がそれを聞くべきですか?関連するビューを担当するのはView Controllerであるべきですか?