我有一个基于视图的NSTableView,其数据由NSArrayController的子类提供。数组控制器还接收来自其他对象的NSNotifications (仅2),告诉它要更新。只要数组控制器不充当NSTableView的委托,一切都按预期工作,每个通知只接收一次。当我将数组控制器附加为NSTableView的委托时(在IB中),这些相同的通知会被多个接收(像几百个!)时间的流逝。数组控制器只为这些通知注册一次(在awakeFromNib:中)。
发布于 2014-03-18 13:35:31
为了子孙后代。
在苹果(Apple)的“Mac桌面视图编程指南”(Table View Programming Guide for Mac)中,有以下几点:
注意:调用makeViewWithIdentifier:owner:会导致在应用程序中多次调用awakeFromNib。这是因为makeViewWithIdentifier: owner :使用传入的所有者加载一个NIB,并且所有者也接收一个awakeFromNib调用,即使它已经处于清醒状态。
因此,当作为委托附加时,我们的类‘awakeFromNib:被调用为每个可见的NSTableView单元格,因此每次都会注册通知观察者。
发布于 2014-03-03 06:46:41
通知和委托是,两个独立的机制,在Cocoa中。
您的代码中肯定有其他事情发生,因为附加委托不应该改变接收到的通知的数量/种类。
https://stackoverflow.com/questions/22129966
复制相似问题