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; }