gpt4 book ai didi

ios - 为什么它在主线程上运行?

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:18:41 25 4
gpt4 key购买 nike

非常简单的代码:

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 documentation .

关于ios - 为什么它在主线程上运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14313130/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com