performSelector:withObject:afterDelay:不在NSPanel中工作?

时间:2015-01-30 13:05:17

标签: objective-c macos cocoa

我的情况很奇怪。

我已经使用一些自定义代码对NSTableview进行了子类化。 我在一个继承自这个子类的NSWindow中有一个tableView。另一个在窗口上打开的NSPanel中的tableView。

在子类中,我使用函数performSelector:withObject:afterDelay:调用一个方法。

该方法成功调用了NSWindow中的表,但它不适用于NSPanel中的表。

如果我直接调用该方法(不使用延迟函数),而是可以正常工作。因此,似乎performSelector:withObject:afterDelay:无法在NSPanel中工作。

任何提示?

1 个答案:

答案 0 :(得分:0)

NSPanel很可能以模式运行,并且有自己的事件循环,因此请performSelector:withObject:afterDelay:inModes: @[NSDefaultRunLoopMode, NSModalPanelRunLoopMode]作为inModes parm。

请参阅runModalForWindow了解事件循环内容的要点。

同样的问题reported here