【发布时间】:2009-09-03 06:30:06
【问题描述】:
我正在 cocoa 中构建一个简单的基于文档的应用程序,但在链接我的文档实例之间的公共数据时遇到了问题。
我想要某种 AppController 并让我的所有文档都可以访问此类的同一个实例。
在 document.xib 中实例化对象将为每个文档创建不同的实例。而在 MainMenu 中实例化该对象会使该对象无法访问。
我怎样才能做到这一点?
【问题讨论】:
标签: objective-c cocoa
我正在 cocoa 中构建一个简单的基于文档的应用程序,但在链接我的文档实例之间的公共数据时遇到了问题。
我想要某种 AppController 并让我的所有文档都可以访问此类的同一个实例。
在 document.xib 中实例化对象将为每个文档创建不同的实例。而在 MainMenu 中实例化该对象会使该对象无法访问。
我怎样才能做到这一点?
【问题讨论】:
标签: objective-c cocoa
一种典型的方法是创建 AppController 对象的单例实例。 您也可以创建一个 AppController 实例并将其保存在您的 AppDelegate 中。 然后,您可以稍后通过调用从代码中的任何位置访问它
[[NSApp delegate] myAppController]
或在 iPhone 上:
[[UIApplication sharedApplication].delegate myAppController]
在精彩的 cocoawithlove 博客上进一步阅读 http://cocoawithlove.com/2008/11/singletons-appdelegates-and-top-level.html
【讨论】:
假设您有充分的理由让单独的文档共享数据(而不是将其放在首选项窗口或其他东西中),您可能应该将 SharedDataController(“AppController”非常宽泛)设置为单例。我有一篇关于 the correct way to make one 的博文。
【讨论】: