【问题标题】:Organizing instance variables in a view hierarchy在视图层次结构中组织实例变量
【发布时间】:2010-11-06 10:11:38
【问题描述】:
在为 iPhone 编程时,我发现我经常需要在多个视图中使用同一个对象实例。处理这个问题的最佳方法是什么?到目前为止,我的策略是将其创建为根视图的成员,并将其传递给后续视图,这些视图将其保留为成员。但是,这似乎不是一个很好的方法,因为很难更新每个类中的引用所指向的内容。我还看到了单例类以及用于此目的的 AppDelegate。作为 iPhone 开发者,您如何处理大型应用程序中的这个问题?
【问题讨论】:
标签:
iphone
design-patterns
uiviewcontroller
【解决方案1】:
App Delegate 方法很容易做到,缺点是一切都必须去获取委托,然后获取共享对象。
单例意味着只有使用单例的类必须知道它,但在内存不足的情况下编写单元测试或正确清理可能更难。此外,您必须更仔细地编写单例类,以便它们正常工作(查看有关单例的 Apple 文档)。
传递一个对象可能会过时,因为有时您最终只有一个指向该对象的链接才能传递给其他人,所以我会避免这种方法,除非您只是从一个父级传递给几个直系子级。
在前两个之间,我稍微倾向于单例,只是因为依赖关系图更简单(如前所述,类只包括他们关心的单例标头,而不是来自 App Delegate 的一大堆)。如果你有很多,那么要做的事情就是制作单例分发类,这些类可以保留类组的单个实例,只是为了让应用程序委托更轻,而不必制作这么多真正的单例类。
我确实喜欢使用应用程序委托来保留实际 UI 的根,例如标签栏控制器或主视图控制器。这似乎比把它塞到别处更自然。