假设我在 NSuserdefaults 中有一个设置应该影响很多(但不是全部)UIView 对象的属性,例如字体大小。该设置也可以从“主”视图控制器更改,并且应该“分发”到 UILabel 对象,这些对象位于 UISplitviewController 内的 UINavigationController 内的 UITableView 内的 UITableviewcell 中的 UIView 中,等等......
如果我在控制器和视图层次结构的所有级别上创建此属性,并在设置父级中的属性时设置该属性,这会花费大量代码。Apple 似乎更喜欢这种模式,通过将 managedObjectContext 沿链传递给子控制器来管理它。但这似乎有点矫枉过正。很多代码只是为了传递属性的值,而没有做任何事情。但是,我确实使用此模式一次在视图的所有子视图中设置属性(通过递归遍历所有子视图)。
委托似乎同样糟糕,除非委托是顶级父视图控制器。但随后我会将委托传递给所有子视图控制器。
我应该改用通知吗?我已经有一个控制器通过 NSUserDefaultsDidChangeNotification 监听 NSUserDefaults 中的(所有)更改。当我的设置更改时,该控制器是否应该发布特定通知?在这种情况下,谁应该听呢?是否应该由视图控制器负责所涉及的视图?