为什么在NSArrayController绑定到数组时会自动调用add / remove方法?

时间:2013-10-20 13:05:32

标签: cocoa key-value-observing nsarraycontroller kvc

我正在尝试了解NSArrayController的工作原理......

  • 当我创建一个NSMutableArray“employeeArray”来保存“Person”对象时。 enter image description here
  • 我在GUI中使用NSArrayController并与“employeeArray”绑定。 enter image description here
  • 我添加了两个按钮,用于在“employeeArray”中添加和删除“Person”对象。两个按钮都绑定了NSArrayController的接收动作“add:”和“remove:”。 enter image description here
  • 为了在“employeeArray”中添加/删除“Person”对象时执行其他操作,我添加了两个方法:
    • (void)insertObject:(Person *)p inEmployeeArrayAtIndex:(NSUInteger)index;
    • (无效)removeObjectFromEmployeeArrayAtIndex:(NSUInteger)指数;

问题:

  1. 我没有做任何事情(编写任何代码)让NSArrayController知道上面的两个方法,为什么当我点击添加/删除按钮时会自动调用它们?发生了什么事?
  2. NSArrayController使用什么添加/删除方法?
  3. NSArrayController是否足够智能识别这些方法?如果我随机修改方法名称会被正确调用吗?

1 个答案:

答案 0 :(得分:0)

我想我终于明白了:

遵循“Key-Value Coding Accessor Methods模式”。 NSArrayController非常智能,可以自动识别“插入”“删除”方法。

如果在不遵循访问者模式的情况下更改方法名称。它不起作用。