IOS-确保在主线程上执行

我想知道如何在 主线上调用我的 function

如何确保我的 function主线上被调用?

(这是继我之前的 有个问题之后)。

115534 次浏览

有什么规则我可以遵循,以确保我的应用程序执行我自己的代码只是在主线程?

通常情况下,你不需要做任何事情来确保这一点ーー你的事情清单通常就足够了。除非您正在与某些恰好产生线程并在后台运行代码的 API 进行交互,否则您将在主线程上运行。

如果你真的想确定,你可以这样做

[self performSelectorOnMainThread:@selector(myMethod:) withObject:anObj waitUntilDone:YES];

在主线程上执行一个方法

这样就行了:

[[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");
});

我认为这很酷,即使通常它的好形式是让方法的调用者负责确保在正确的线程上调用它。

if (![[NSThread currentThread] isMainThread]) {
[self performSelector:_cmd onThread:[NSThread mainThread] withObject:someObject waitUntilDone:NO];
return;
}