Objective c GCD在iOS5中崩溃
我正在开发一个静态库。 我在库中使用反向身份验证,使用的源代码来自。 在这个库中,以下代码在iOS5中崩溃,但在iOS6中工作正常Objective c GCD在iOS5中崩溃,objective-c,ios,grand-central-dispatch,Objective C,Ios,Grand Central Dispatch,我正在开发一个静态库。 我在库中使用反向身份验证,使用的源代码来自。 在这个库中,以下代码在iOS5中崩溃,但在iOS6中工作正常 dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0) 如果我们按以下方式更改行,那么它在所有OS版本中都可以正常工作 dispatch_async(dispatch_get_main_queue() 这种改变在任何情况下都有效吗?还是会产生任何问题? 请提供建议,
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)
如果我们按以下方式更改行,那么它在所有OS版本中都可以正常工作
dispatch_async(dispatch_get_main_queue()
这种改变在任何情况下都有效吗?还是会产生任何问题?
请提供建议,谢谢。如果看不到您的代码,很难判断,但这听起来像是您在没有GCD块的情况下向块之前创建的对象发送消息,而该对象在块执行时已不存在。我建议将其设置为属性以保留它,这样ARC就不会收集它
iOS版本之间的差异可能是由于模拟器和设备之间的差异造成的(您说您在设备上运行iOS 6版本,在模拟器上运行iOS 5版本)。您会遇到什么错误?崩溃日志?谢谢你的回复@mprivat。它在iOS 5模拟器中抛出“objc_msgSend”,我没有iOS 5设备,但在iOS 6设备中工作正常。我也有同样的问题,但我很笨。我已将我的应用程序的部署目标设置为6.0。将其改回5.0允许我保留相同的“dispatch\u async”代码行,并在两个操作系统上工作。