NSTableViewDelegate接收多个NSNotifications

时间:2014-03-02 16:06:53

标签: objective-c macos cocoa nstableview nsnotification

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

2 个答案:

答案 0 :(得分:2)

通知和代表在Cocoa中是两个独立的机制

您的代码中必定还有其他内容,因为附加代理不应更改正在接收的通知的数量/种类。

答案 1 :(得分:0)

为了子孙后代。

在Apple的桌面视图编程指南中用于Mac'是这个小金块:

  

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

所以,作为代表,我的班级' awakeFromNib:正在为每个可见的NSTableView单元调用,导致通知观察者每次都被注册。