isa*_*ent 9 iphone objective-c ios
参考:
就像上面说的链接一样,但似乎并没有解释原因.
在我的代码中,以下内容将起作用:
dispatch_async(dispatch_get_main_queue(), ^{
[self performSelector: @selector(helloWorld) withObject:nil afterDelay:0.5];
});
Run Code Online (Sandbox Code Playgroud)
但是,当我评论这样的事情时,(我确信我在主线程中运行它!!)代码不起作用:
// dispatch_async(dispatch_get_main_queue(), ^{
[self performSelector: @selector(helloWorld) withObject:nil afterDelay: 0.5];
// });
Run Code Online (Sandbox Code Playgroud)
有人可以告诉我为什么吗?和 '自我',将神经释放/解除分配,我保留它直到申请结束.
"不工作",意味着,(没有崩溃)它不会跳转到"helloWorld"方法:
-(void) helloWorld {
NSLog(@"hello world"); // I set a break point here for debug , it wouldn't pause forever
}
Run Code Online (Sandbox Code Playgroud)
我认为Run Loop会导致这个问题.喜欢这个链接说,但我需要更多细节或更明确的解释.
Wal*_*ers 24
当我发生这种事情时,我从GCD调度中调用performSelector.所以它是在GCD工作线程中设置定时器,它在定时器触发之前就消失了.当GCD删除了工作线程时,计时器丢失,因此从未调用选择器.