0

我注意到我的子类 os NSTreeControllernewObject仅在add:调用该方法时运行,但从不运行addChild:

我发现这个线程讨论了同样的问题。虽然在这种情况下,用户在核心数据模式下使用树控制器,但是我已经设置为使用特定的类(对象模式)。

addChild:不使用该newObject方法的原因是什么?

如果newObject被要求,add:我看不出它为什么不适合addChild:. 我在 Apple 的 SourceView 演示应用程序中确认了这种行为,方法是将 OutlineController 替换为子类,并将按钮连接到add:并且addChild:- 再次仅add:调用newObject. 我发现这真的真的很奇怪的行为。

4

2 回答 2

1

在文档中找到了答案

add: 和 insert: 操作使用 newObject 方法创建添加到集合中的对象。在对象模式下 addChild: 和 insertChild: 创建 objectClass 指定的类的对象,但不要使用 newObject 方法这样做。

至少它说它是这样的。虽然它与类参考相矛盾。他们忽略了解释为什么会这样。

于 2013-12-08T14:25:05.023 回答
0

addChild: 不使用 newObject 方法可能有什么原因?

这取决于上下文。如果NSTreeController正在与普通旧对象对话,它将-newObject的上下文中运行-addChild,因为给定 known -objectClass,树控制器拥有它需要的所有信息,以便将所有内容放在正确的位置。

If NSTreeControlleris talk to anNSManagedObjectContext,不会运行-newObject,因为-newObject实现没有足够的上下文来建立与选择的关系,并且一旦完成,关系就必须到位-addChild:

于 2013-12-08T19:10:21.927 回答