【发布时间】:2013-06-02 02:54:05
【问题描述】:
参考:
https://stackoverflow.com/a/14741253/1749293
就像上面的链接说的那样,但似乎没有解释原因。
在我的代码中,以下将起作用:
dispatch_async(dispatch_get_main_queue(), ^{
[self performSelector: @selector(helloWorld) withObject:nil afterDelay:0.5];
});
但是,当我评论这样的事情时,(我真的确定我在主线程中运行它!!)代码不起作用:
// dispatch_async(dispatch_get_main_queue(), ^{
[self performSelector: @selector(helloWorld) withObject:nil afterDelay: 0.5];
// });
谁能告诉我为什么? AND 'self',会释放/释放,我会保留它,直到应用程序结束。
“不工作”,意味着,(没有崩溃)它不会跳转到“helloWorld”方法:
-(void) helloWorld {
NSLog(@"hello world"); // I set a break point here for debug , it wouldn't pause forever
}
我认为是 Run Loop 导致了这个问题。就像this link 说的那样,但我需要更多细节或更明确的解释。
【问题讨论】:
-
如果你确实在主线程上,那就奇怪了。您不使用
dispatch_after()的任何特殊原因? -
什么是 BROKER.actors.event?
-
在您的第一个代码中您使用
self,而在第二个代码中您使用BROKER.actors.event。所以你确定他们指的是同一件事吗? -
“不起作用”...是什么意思?它会崩溃吗?以防万一,日志消息是什么?
-
看到您的最后一次编辑,您似乎不在主线程上,在这种情况下,@WaltSellers 的回答适用。你究竟是如何测试你在主线程上的?你能写一个重现你的问题的小测试用例吗?
标签: iphone ios objective-c