NSTableViewDelegate 接收多个 NSNotifications



我有一个基于视图的NSTableView,其数据由NSArrayController的一个子类提供。阵列控制器还从其他对象接收 NSNotization(仅 2 个),告诉它进行更新。只要阵列控制器不充当 NSTableView 的委托,一切就会按预期工作,并且每个通知只接收一次。当我将阵列控制器作为 NSTableView 的委托(在 IB 中)附加时,这些相同的通知会收到多次(如数百次!数组控制器只为这些通知注册一次(在 awakeFromNib:中)。

通知和委托是 Cocoa 中的两个独立机制

代码中必须有其他事情发生,因为附加委托不应更改收到的通知的数量/类型。

为了后代。

在Apple的"Mac表格视图编程指南"中,有这样一个小块:

注意:调用 makeViewWithIdentifier:owner: 会导致在您的应用中多次调用 awakeFromNib。这是因为makeViewWithIdentifier:owner:使用传入的所有者加载NIB,并且所有者也会收到一个awakeFromNib调用,即使它已经唤醒。

因此,当作为委托附加时,我的类的 awakeFromNib: 被调用为每个可见的 NSTableView 单元格,导致每次都注册通知观察者。

最新更新