gpt4 book ai didi

ios - isMainThread 和 currentThread == mainThread 有什么区别?

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

我正在查看一些旧代码,并看到以下 if 语句:

if ([NSThread currentThread] != [NSThread mainThread])

我偷偷怀疑这和

if (![[NSThread currentThread] isMainThread])

我很怀疑,因为我们从该领域获得了一些崩溃报告(仅限 iOS 6),这些崩溃报告似乎是由需要在主线程上运行的代码引起的,而实际上不是。该代码似乎受到前一个 if 语句的保护,但考虑到我们看到的崩溃次数,我不相信。

上面的两个 if 语句是否等效,或者第一个是否有可能由于某种原因而失败?

最佳答案

How could [NSThread currentThread] return a different instance of the same thread?

文档不保证返回的 NSThread 实例总是相同的。一个假设的实现可能是:

+ (NSThread *)currentThread {
return [[NSThread alloc] initWithPrivateIdentifier:pthread_self()];
}

实际的实现不太可能像这样工作。我的直觉甚至说比较实例身份是安全的——但文档不支持这一点。

Is it possible for a given thread to have multiple instances?

文档没有相反的说明。所以,是的,这至少是可以想象的。

I'm trying to determine if this really has a chance of fixing a crash I can't reproduce.

实际上,在实践中,我怀疑 [NSThread currentThread] != [NSThread mainThread]+[NSThread isMainThread] 不同,但这只是我的感觉。

关于ios - isMainThread 和 currentThread == mainThread 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14141892/

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