当前位置:  开发笔记 > IOS > 正文

Cocoa中的共享对象

如何解决《Cocoa中的共享对象》经验,为你挑选了1个好方法。

我在Cocoa中使用CoreData(不是基于文档的).我的问题是,我想从不同的NIB访问SAME NSArrayController.但每个NIB都有自己的NSArrayController实例.

我现在的问题是如何生成sharedObjects(如NSUserDefaultsController).这对我很有帮助.谢谢你的回答.=)



1> Barry Wark..:

您通常不希望在nib之间共享NSArrayController.拥有多个NSArrayController(每个NIB一个)可能更好,它们都绑定到相同的底层模型.如果您希望此模型(例如NSArray)成为应用程序全局,则可以通过NSApplication的委托公开它(例如,在MainMenu.nib中实例化您的自定义MyAppDelegate类,并将NSApplication的delegate出口连接到MyAppDelegate类的实例).在其他NIB中,您可以绑定NSArrayController的contentArray绑定Shared Application.delegate.myArray(假设MyAppDelegate通过符合KVC的方法公开 - 调用NSArray绑定myArray).您实际上是使用IB和MainMenu.nib来创建MyAppDelegate的单例实例.

请记住,这种方法使得单元测试应用程序变得困难,因为对象图中现在有单例,在测试期间无法模拟或存根.为每个辅助(非MainMenu.nib)NIB创建NSWindowController或NSViewController并将这些nib中的NSArrayControllers绑定到更好File Owner.myArray.然后,您可以实例化NSWindowController或NSViewController,在加载辅助NIB之前将其传递给一个数组(或符合KVC的数组对象).通过这种方式,您可以单独测试nib的功能(对阵列使用模拟或存根).

推荐阅读
手机用户2502852037
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有