作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
非常简单的代码:
queue = [[NSOperationQueue alloc] init];
[queue addOperationWithBlock:^{
NSLog(@"%@", [NSThread mainThread]? @"main" : @"not main");
}];
打印“主要”。
为什么?除非我调用 [NSOperationQueue mainQueue]
,否则它不应该在 bg 线程中异步运行吗?
最佳答案
[NSThread mainThread]
总是返回一个对象(因此在转换为 BOOL
时产生 YES
),因为当有一个主线程时你的程序正在运行。
如果要判断当前线程是否为主线程,需要使用NSThread
的currentThread
方法。
NSLog(@"%@", [[NSThread currentThread] isEqual:[NSThread mainThread]]
? @"main" : @"not main");
NSThread
有一个更好的方法;看来你可以使用 isMainThread
方法来检查当前线程是否是主线程:
if ([[NSThread currentThread] isMainThread]) {
//
}
正如用户@borrrden 指出的那样,您只需要使用[NSThread isMainThread]
,
if([NSThread isMainThread]){
//
}
关于ios - 为什么它在主线程上运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14313130/
有人可以向我澄清主线 DHT 规范中的声明吗? Upon inserting the first node into its routing table and when starting up th
我正在尝试使用 USB 小工具驱动程序使嵌入式设备作为 MTP 设备工作。 我知道 Android 从大容量存储设备切换到 MTP 设备已经有一段时间了,并且找到了 source code for M
我是一名优秀的程序员,十分优秀!