gpt4 book ai didi

iphone - performSelectorOnMainThread 不执行

转载 作者:可可西里 更新时间:2023-11-01 04:44:45 26 4
gpt4 key购买 nike

为此我大发雷霆,如有任何想法或建议,我们将不胜感激。

我有一个对象,它从子线程自身调用 performSelectorOnMainThread:withObject:waitUntilDone:。这在 95% 的时间里工作正常。自 iOS 测试版和现在发布以来,每隔一段时间,设备就会拒绝执行 performSelectorOnMainThread:withObject:waitUntilDone: 调用...没有错误消息,它不会崩溃,我可以'不要让设备进入“失败”状态,但一旦进入该状态,它就会继续失败,直到我删除并重新安装该应用程序,或强制其退出,然后调整其位置服务限额,然后再次启动它,然后重新调整它的位置服务再次恢复正常......重新启动设备并不能解决它。不先删除就重新安装并不能解决问题。这很奇怪....我知道它大部分时间都有效,因为大多数设备都没有问题,但是有些设备会定期出现故障(可能每 3 或 4 天)。我知道特别是 performSelectorOnMainThread:withObject:waitUntilDone: 没有调用它应该调用的内容,因为我现在有一个失败的设备,并且我已经将 NSLog 放入应该调用的方法中。它运行良好,但在发生故障的设备上,当 performSelectorOnMainThread:withObject:waitUntilDone: 用于调用该方法时,NSLog 显示它没有运行...

这种情况从 iOS 5 测试版开始出现,并且在发布时再次出现。它最常发生在我的 2 台设备上,但在我亲自测试过的其他 10 台设备上都没有。我以为这只是我的设备在测试版中出现了一些问题,但它发生在我从未接触过测试版的全新 4S 以及一个用户的 iPad 2 上(而不是在我的 iPad 2 上)。

我真的不知道去哪里找。我告诉它执行,它通常在几乎所有设备上执行,但在某些设备上,同一行没有响应也没有错误等......

最佳答案

performSelectorOnMainThread:withObject:waitUntilDone 有时会很不稳定。您是否考虑过尝试使用 lib dispatch?

您可以像这样创建一个 block 并将其发布到主线程上:

dispatch_async(dispatch_get_main_queue(), ^{
<do work here>
});

这将具有与使用 performSelectorOnMainThread:withObject:waitUntilDone 相同的保存效果
http://developer.apple.com/library/ios/documentation/General/Conceptual/ConcurrencyProgrammingGuide/OperationQueues/OperationQueues.html#//apple_ref/doc/uid/TP40008091-CH102-SW1

关于iphone - performSelectorOnMainThread 不执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7921183/

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