Cocoa 为什么在NSArrayController绑定到阵列时自动调用add/remove方法?

Cocoa 为什么在NSArrayController绑定到阵列时自动调用add/remove方法?,cocoa,key-value-observing,nsarraycontroller,kvc,Cocoa,Key Value Observing,Nsarraycontroller,Kvc,我想了解NSArrayController是如何工作的 当我创建一个NSMutableArray“employeeArray”来保存“Person”对象时。 我在GUI中使用NSArrayController并绑定“employeeArray”。 我添加了两个按钮,用于在“employeeArray”中添加和删除“Person”对象。这两个按钮都与收到的NSArrayController的“添加:”和“删除:”操作绑定在一起。 为了在“employeeArray”中添加/删除“Perso

我想了解NSArrayController是如何工作的

  • 当我创建一个NSMutableArray“employeeArray”来保存“Person”对象时。
  • 我在GUI中使用NSArrayController并绑定“employeeArray”。
  • 我添加了两个按钮,用于在“employeeArray”中添加和删除“Person”对象。这两个按钮都与收到的NSArrayController的“添加:”和“删除:”操作绑定在一起。
  • 为了在“employeeArray”中添加/删除“Person”对象时执行其他操作,我添加了两种方法:
    • (void)insertObject:(Person*)p inEmployeeArrayAtIndex:(nsInteger)index
    • (void)从EmployeeArrayatIndex:(nsInteger)索引中移除Objects
问题:

  • 我没有做任何事情(编写任何代码)让NSArrayController知道上述两种方法,为什么在单击“添加/删除”按钮时会自动调用它们?发生了什么事
  • NSArrayController使用什么添加/删除方法
  • NSArrayController是否足够聪明,能够识别这些方法?如果我随机修改了方法名,它会被正确调用吗

  • 我想我终于明白了:

    通过遵循“模式”。NSArrayController足够智能,可以自动识别“插入”“删除”方法

    如果在不遵循访问器模式的情况下更改方法名称。这是行不通的