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

ero*_*ppa 0 iphone

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

[target performSelectorOnMainThread:(SEL)selector withObject:nil waitUntilDone:FALSE];
Run Code Online (Sandbox Code Playgroud)

但是在我改变它之后,它不起作用

[target performSelector:(SEL)selector withObject:nil afterDelay:0];
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

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

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

Nik*_*uhe 11

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

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