performSelectorOnMainThread工作,但performSelector不是为什么?

时间:2009-10-03 18:54:33

标签: iphone

我有一个选择器和目标,并调用像这样的方法

[target performSelectorOnMainThread:(SEL)selector withObject:nil waitUntilDone:FALSE];

但在我将其更改为此后,它无法正常工作

[target performSelector:(SEL)selector withObject:nil afterDelay:0];

有什么想法吗?

我不想在主线程上执行该任务,因为它滞后于UI。

通过不起作用我的意思是它根本不调用该方法。我在模拟器中有im debu模式,并确认它没有被调用。

1 个答案:

答案 0 :(得分:11)

我假设您从主线程以外发送消息。 Cocoa只是为主线程构建一个运行循环,对于你自己构建一个线程的其他线程。方法performSelector:withObject:afterDelay:为下一次运行循环的传递调度消息。因此,如果没有,则不会发送消息。

对于您的情况,为什么不发送[target performSelector:selector withObject:nil];?你不需要一个运行循环,消息将立即发送(在同一个线程上)。