我注意到我的子类os NSTreeController仅在调用newObject
方法时运行add:
但从不用于addChild:
我发现this thread讨论了同样的问题。虽然在这种情况下用户在Core Data模式下使用树控制器,但是我已经设置为使用特定的Class(对象模式)。
addChild:
没有使用newObject
方法的原因是什么?
如果为newObject
调用add:
,我认为没有理由说它不适用于addChild:
。我在Apple的SourceView演示应用程序中通过将OutlineController替换为子类,并将按钮连接到add:
和addChild:
- 再次仅add:
调用newObject
来确认此行为。我觉得这真的很奇怪。
答案 0 :(得分:1)
add:和insert:actions使用newObject方法创建 添加到集合的对象。在对象模式下addChild:, 和insertChild:创建objectClass指定的类的对象, 但不要使用newObject方法。
至少它说是这样的。虽然它与Class Reference相矛盾。他们忽略了解释为什么会这样。
答案 1 :(得分:0)
addChild的原因是什么:不使用newObject方法?
这取决于背景。如果NSTreeController
正在与普通旧对象交谈,则 将在-newObject
的上下文中运行-addChild
,因为已知-objectClass
,树控制器具有所需的所有信息,以便将所有内容放在正确的位置。
如果NSTreeController
正在与NSManagedObjectContext,
通话,则将运行-newObject
,因为-newObject
实施将没有足够的上下文建立与选择的关系,一旦-addChild:
完成,关系必须到位。