为iPhone编程时,我发现我经常需要在多个视图中使用相同的对象实例。处理这个问题的最佳方法是什么?到目前为止,我的策略是将其创建为根视图的成员,并将其传递给后续视图,后者将其保留为成员。但是,这似乎不是一个非常好的方法,因为更新每个类中的引用指向的内容非常困难。我也看过单例类以及用于此目的的AppDelegate。作为iPhone开发人员,您如何在大型应用程序中处理此问题?
答案 0 :(得分:4)
App Delegate方法很容易实现,缺点是一切都必须获取委托,然后获取共享对象。
单身人士意味着只有使用单身人士的班级必须了解它,但在低内存情况下编写单元测试或正确清理可能会更困难。此外,您必须更仔细地编写单例类,以便它们正常工作(查看关于单例的Apple文档)。
传递一个物体可能会变老,因为有时你最终只有一个指向该物体的链接传递给其他人,所以我会避免这种做法,除非你只是从一个父母传给一些直接的孩子。
在前两个之间,我只是因为依赖图更简单(因为所提到的类只包括他们关心的单例头而不是来自App Delegate的一大堆)而倾向于单身。如果你有很多这样的事情要做的事情就是将单个分发类保存到类组的单个实例上,只是为了让app委托变得更轻,而不是必须创建那么多真正的单例类。 / p>
我喜欢使用app delegate来保持实际UI的根目录,比如标签栏控制器或主视图控制器。这似乎比把它塞进其他地方更自然。