【问题标题】:Xcode 8, iOS 8 simulator with crash: "dyld: lazy symbol binding failed: Symbol not found: _objc_unsafeClaimAutoreleasedReturnValue"Xcode 8,iOS 8 模拟器崩溃:“dyld:惰性符号绑定失败:找不到符号:_objc_unsafeClaimAutoreleasedReturnValue”
【发布时间】:2025-12-10 12:45:01
【问题描述】:

更新到 Xcode 8,在 iOS 8 模拟器中运行我的应用程序,尽管 iOS9 和 iOS10 都没有问题。

“dyld:惰性符号绑定失败:找不到符号: _objc_unsafeClaimAutoreleasedReturnValue 引用自:** 预期在:/Library/Developer/CoreSimulator/Profiles/Runtimes/iOS 8.1.simruntime/Contents/Resources/RuntimeRoot/usr/lib/libobjc.A.dylib

dyld:找不到符号:_objc_unsafeClaimAutoreleasedReturnValue
引用自:** 预期于: /Library/Developer/CoreSimulator/Profiles/Runtimes/iOS 8.1.simruntime/Contents/Resources/RuntimeRoot/usr/lib/libobjc.A.dylib"

【问题讨论】:

  • 您好@xojiang,您找到任何解决方案了吗?我面临着完全相同的问题!

标签: ios xcode8


【解决方案1】:

如果您在主项目下有任何子项目,可能发生这种情况的原因之一是一个或多个子项目的“部署目标”高于主项目。

例如,如果您的主项目的部署目标为 8.0,则将所有子项目的部署目标设置为 8.0。 我认为这将解决您的问题。让我知道,以防万一。干杯。

【讨论】:

  • 感谢您的建议。最后我们发现原因是某些子项目覆盖了'+(void) load'方法。修复一下就没有问题了。
  • 谢谢。在我的案例中,开发 pod 有 12.0,主项目有 13.0。我在 Podfile 中添加了platform :ios, '13.0'
【解决方案2】:

在下载的库中更改函数参数后,我遇到了同样的问题。清理构建目录为我做了。

【讨论】:

    【解决方案3】:

    升级到 Xcode 8 后我遇到了完全相同的问题,正如@Shaggy 指出的那样,在我的情况下,这是由于依赖项目中的部署目标设置为 9.3 而我的主项目的部署目标为 8.0。

    要添加更多信息,查看导致崩溃的堆栈跟踪以查明项目可能很有用,尤其是当您有许多依赖项目时。就我而言,我发现某些函数是从依赖库项目中调用的,而确实是那个特定项目导致了问题。

    【讨论】:

      【解决方案4】:

      我在构建自定义 CocoaPod 时遇到了这个问题。我正在构建的 pod 使用的是 Swift 版本 5,而示例项目使用的是 Swift 版本 4。我必须将 4 提高到 5 才能摆脱这种崩溃。

      【讨论】:

      • 这是我的确切问题。谢谢!
      【解决方案5】:

      iOS 11 确保您的 presentViewController 为 true 这是错误的:

      let vc = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(Identifier : "VerificationsVC") Wrong
      this is true: 
       let vc = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier : "VerificationsVC")
      

      【讨论】: