繁体   English   中英

为什么要在主线程上运行?

[英]Why does this run on main thread?

很简单的代码:

queue = [[NSOperationQueue alloc] init];
[queue addOperationWithBlock:^{
    NSLog(@"%@", [NSThread mainThread]? @"main" : @"not main");    
}];

打印“主要”。

为什么? 除非我调用[NSOperationQueue mainQueue] ,否则它不是应该在bg线程中异步运行吗?

[NSThread mainThread]始终返回一个对象(因此,当转换为BOOL时,其结果为YES ),因为程序运行时会有一个主线程。

如果要检查当前线程是否为主线程,则需要使用NSThreadcurrentThread方法。

NSLog(@"%@", [[NSThread currentThread] isEqual:[NSThread mainThread]] 
      ? @"main" : @"not main");

NSThread有更好的方法。 看来可以使用isMainThread方法检查当前线程是否为主线程:

if ([[NSThread currentThread] isMainThread]) {
   //
}

正如@borrrden用户指出的那样,您只需要使用[NSThread isMainThread]

if([NSThread isMainThread]){
   //
}

请参阅NSThread文档

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM