1

在为 iPhone 编程时,我发现我经常需要在多个视图中使用同一个对象实例。处理这个问题的最佳方法是什么?到目前为止,我的策略是将其创建为根视图的成员,并将其传递给后续视图,这些视图将其保留为成员。但是,这似乎不是一个很好的方法,因为很难更新每个类中的引用所指向的内容。我还看到了单例类以及用于此目的的 AppDelegate。作为一名 iPhone 开发者,您如何处理大型应用程序中的这个问题?

4

1 回答 1

4

App Delegate 方法很容易做到,缺点是一切都必须去获取委托,然后获取共享对象。

单例意味着只有使用单例的类必须知道它,但在内存不足的情况下可能更难编写单元测试或正确清理。此外,您必须更仔细地编写单例类,以便它们正常工作(查看关于单例的 Apple 文档)。

传递一个对象可能会变老,因为有时你最终只有一个指向该对象的链接才能传递给其他人,所以我会避免这种方法,除非你只是从一个父母传给几个直系子女。

在前两者之间,我倾向于单例,只是因为依赖关系图更简单(如前所述,类只包括他们关心的单例标头,而不是来自 App Delegate 的一大堆)。如果你有很多,那么要做的事情就是制作单例分发类来保存类组的单个实例,只是为了让应用程序委托更轻,而不必制作这么多真正的单例类。

我确实喜欢使用应用程序委托来保留您实际 UI 的根,例如标签栏控制器或主视图控制器。这似乎比把它塞到别处更自然。

于 2009-06-27T22:02:15.687 回答