gpt4 book ai didi

objective-c - NSThread 分离新线程选择器 : Crash only in release build in Xcode 7 + Swift 2. 0

转载 作者:行者123 更新时间:2023-11-30 14:18:28 25 4
gpt4 key购买 nike

我有一个框架,可以回调 AppDelegate 中的方法。 使用 detachNewThreadSelector: NSThread ,看起来像这样:

private func bridgeSelector(selector: String?, object: String?) {
if selector != nil && responder != nil {
dispatch_async(dispatch_get_main_queue(), {
NSThread.detachNewThreadSelector(Selector(
selector!),
toTarget: self.responder!,
withObject: object
)
})
}
}

responder var分配给self AppDelegate 当框架的类初始化时。

应用程序在调试版本中运行没有问题,但如果在发布版本中,则在调用上述内容时立即崩溃。 (当我在发布版本中关闭优化时,它也会崩溃。)

我正在使用 Xcode 7 beta 和 Swift 2.0。 (我知道它是测试版,但它是唯一支持 Swift 2 的测试版。)

编辑 - 我最终使用闭包而不是 detachNewThreadSelector: 。在两个版本中都适用。

最佳答案

尝试添加 respondsToSelector: 检查那里。它很脏,但类似的东西。我相信它很脏

func bridgeSelector(selector: String?, object: String?) {
if let r = responder, let sel = selector where
r.respondsToSelector(Selector(sel))
{
dispatch_async(dispatch_get_main_queue(), {
NSThread.detachNewThreadSelector(
Selector(sel),
toTarget: r,
withObject: object
)
})
}
}

关于objective-c - NSThread 分离新线程选择器 : Crash only in release build in Xcode 7 + Swift 2. 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30831524/

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