2009-10-03 92 views
0

我有一个选择和目标,并呼吁像这样performSelectorOnMainThread工作,但performSelector不是为什么?

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

的方法,但之后我改成了这一点,这是行不通的

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

任何想法?

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

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

+0

你能更具体地说“不行”吗?你为什么选择选择器到(SEL),是不是已经有一个? – 2009-10-03 19:10:18

回答

11

我假设你从主线程以外的地方发送消息。 Cocoa只是为主线程创建一个运行循环,对于其他线程你必须自己构建一个线程。方法performSelector:withObject:afterDelay:安排下一次通过运行循环的消息。所以如果没有,这个消息将不会被发送。

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

+0

拯救生命。这非常棘手,没有很好地记录! – erotsppa 2009-10-03 19:27:30

相关问题