我有一个关于使用符合 KVO 的方法从数组中插入/删除对象的问题。我正在研究 Aaron Hillegass 的 Cocoa Programming for Mac OS X,我看到了以下代码行(在insertObject:inEmployeesAtIndex:
方法中:
[[undoManager prepareWithInvocationTarget:self] removeObjectFromEmployeesAtIndex:index];
如果我错了,请纠正我,但我一直认为最好先打电话mutableArrayValueForKey:
然后removeObjectAtIndex:
......所以我尝试将上面的行更改为:
[[undoManager prepareWithInvocationTarget:[self mutableArrayValueForKey:@"employees"]] removeObjectAtIndex:index];
它没有用。有人可以解释其中的区别以及为什么第一行有效而第二行无效吗?
更新:我的 removeObjectFromEmployeesAtIndex:index 方法被实现以使我的集合类(NSMutableArray 的一个实例)符合 KVC。所以最终,调用[[self mutableArrayValueForKey:@"employees"] removeObjectAtIndex:index];
应该最终调用[self removeObjectFromEmployeesAtIndex:index];