0

我肯定错过了什么。我在 Aaron Hillegass 的 Cocoa Programming 中标题为“Key-Value Observing”的章节中。

我插入了使应用程序能够撤消/重做从 RaiseMan 中添加和减少员工的代码。该应用程序有效但是我想知道为什么当我将“添加员工”链接到 NSArrayController 到它调用的 ADD 方法(使用 .xib 文件)时

- (void)insertObject:(Person *)p inEmployeesAtIndex:(int)index;

根据Key-Value Coding,add方法不应该调用吗?

- (void)addEmployeesObject:newEmployee;

我正在链接“添加”方法而不是“插入”方法。

4

2 回答 2

1

这是使用KVC 集合访问器方法时的预期行为。在所需位置(即使该位置在末尾)插入对象比想知道“它是否在末尾”并直接调用 -add... 更有效。所有这些都比在已知修改范围时用全新的(例如,-setEmployees:)数组替换整个数组更有效。NSArrayController 最终在将对象插入到它所控制的数组中时使用此方法。

于 2012-06-25T14:56:56.173 回答
1

您的数组控制器绑定到有序集合(数组)。这就是为什么它用于insertObject:inEmployeesAtIndex:在集合末尾添加一个新对象。

addEmployeesObject:如果集合是无序的(即集合),将使用该方法。

于 2012-06-25T14:59:07.933 回答