gpt4 book ai didi

cocoa - Cocoa 中的共享对象

转载 作者:行者123 更新时间:2023-12-03 16:25:05 24 4
gpt4 key购买 nike

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

我现在的问题是如何生成共享对象(如 NSUserDefaultsController)。这对我有很大帮助。感谢您的回答。 =)

最佳答案

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

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

关于cocoa - Cocoa 中的共享对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/485245/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com