Предположим, у меня есть параметр в NSuserdefaults, который должен влиять на свойство многих (но не всех) объектов UIView, например размер шрифта. Этот параметр также может быть изменен из «основного» контроллера представления и должен быть «распределен» по объектам UILabel, которые живут в UIView в UITableviewcell внутри UITableView внутри UINavigationController внутри UISplitviewController и т. д.
Если я создаю это свойство на всех уровнях иерархии контроллера и представления и устанавливаю свойство, когда установлено свойство в родительском элементе, это требует много кода. Apple, кажется, предпочитает этот шаблон для управления ManagedObjectContext, передавая его дочернему контроллеру по цепочке. Но это кажется излишеством. Много кода предназначено только для передачи значения свойства, в то время как с ним ничего не делается. Однако я использую этот шаблон для одновременной установки свойств во всех подпредставлениях представления (путем рекурсивного обхода всех подпредставлений).
Делегирование кажется таким же плохим, за исключением, возможно, не того случая, если делегат будет контроллером родительского представления верхнего уровня. Но тогда я бы передал делегата всем дочерним контроллерам представления.
Должен ли я вместо этого использовать уведомления? У меня уже есть контроллер, прослушивающий (все) изменения в NSUserDefaults через NSUserDefaultsDidChangeNotification. Должен ли этот контроллер публиковать конкретное уведомление при изменении моих настроек? В таком случае, кто должен это слушать? Должен ли контроллер представления отвечать за задействованные представления?