iOS – 确保主线程执行
我想知道如何在主线程上调用我的function
。
我如何确保我的function
在主线程上调用?
(这是我之前的一个问题 )。
有任何规则我可以遵循,以确保我的应用程序执行我自己的代码只是在主线程?
通常情况下,你不需要做任何事情来确保这一点 – 你的清单通常就足够了。 除非你正在和一些产生线程的API交互,并且在后台运行你的代码,否则你将在主线程上运行。
如果你想确定的话,你可以做类似的事情
[self performSelectorOnMainThread:@selector(myMethod:) withObject:anObj waitUntilDone:YES];
在主线程上执行一个方法。 (还有一个GCD等价物。)
这将做到这一点:
[[NSOperationQueue mainQueue] addOperationWithBlock:^ { //Your code goes in here NSLog(@"Main Thread Code"); }];
希望这可以帮助!
当你使用iOS> = 4时
dispatch_async(dispatch_get_main_queue(), ^{ //Your main thread code goes in here NSLog(@"Im on the main thread"); });
我认为这很酷,即使是一般的良好的forms,让一个方法的调用者负责确保调用正确的线程。
if (![[NSThread currentThread] isMainThread]) { [self performSelector:_cmd onThread:[NSThread mainThread] withObject:someObject waitUntilDone:NO]; return; }