【问题标题】:Xcode 7 Beta 6, dyld ___NSArray0__ crashXcode 7 Beta 6,dyld ___NSArray0__ 崩溃
【发布时间】:2015-11-19 14:57:47
【问题描述】:

我第一次能够在 Xcode 7 中编译我的应用程序(在 beta 4 和 5 中失败)。所以,我猜这是一个很好的进展。

但是,当我在 iPhone 6、iOS 8.4.1 上加载我的应用程序时,它在调试器中崩溃并显示以下消息:

dyld:未找到符号:_NSArray0 引用自:/private/var/mobile/Containers/Bundle/Application/0294DF62-AE80-485D-BB11-8C3A5D39777D/Boxtiq.app/Boxtiq 预期在:/System/Library/Frameworks/CoreFoundation.framework/CoreFoundation 在 /private/var/mobile/Containers/Bundle/Application/0294DF62-AE80-485D-BB11-8C3A5D39777D/Boxtiq.app/Boxtiq

这与链接库的顺序有关吗?期待一些建议。

谢谢!

【问题讨论】:

  • “当我在我的 iPhone 6、iOS 8.4.1 上加载我的应用程序时”您无法在 Xcode 7 beta 版的 iOS 8 设备上运行。

标签: ios xcode core-foundation beta xcode7-beta6


【解决方案1】:

这是使用新 XCODE 版本的 iOS8 构建的问题,请删除 CoreFoundation.framework 并再次添加,状态为“Optional”。

【讨论】:

    【解决方案2】:

    我有同样的错误,我修复了。 我删除了 CoreFoundation.framework 并再次添加,状态为“可选”并且工作正常。

    【讨论】:

    • set Optional 就够了,不用删除再添加
    【解决方案3】:

    我也遇到了这个问题,我通过将框架 CoreFoundation.framework 添加到构建设置来解决它。

    【讨论】:

    • 项目常规 ==> 链接框架和库 ==> 添加 CoreFoundation(将状态设置为 Optional
    【解决方案4】:

    如果其他人在运行单元测试时遇到此问题,请执行以下操作:

    1. 选择单元测试目标
    2. 转到构建设置
    3. 搜索“部署目标”
    4. 将部署目标版本更改为项目的部署目标

    就是这样!

    【讨论】:

    • 这是我的问题。
    • 嘿,很高兴它有帮助:)
    • 请注意,您必须为主项目和所有子项目设置此项 - 在主项目中,这出现在 General 下,但在子项目(库)中,这出现在 Deployment 下,如图所示。最简单的方法是使用每个子项目的构建设置下的搜索框。我在这里没有添加任何内容,只是想让它更清晰。谢谢谢尔盖!!
    【解决方案5】:

    我通过将它放入 podfile 来修复它。 平台:ios,'8.4' 无需将您的设备更新到 iOS 9 并在 8.4 测试中失败。

    【讨论】:

    • 这对我有用。比接受的答案更好,因为我还不想更新我的设备。
    • 此修复有效。您提到的问题的根源是deploy target 设置。如果您正在使用 pod,您还应该更新集成 pod 项目中的部署目标。使其运行 pod update 以将 pod 重新集成到工作区。全部清洁。运行。
    【解决方案6】:

    我曾经在为 7.0 GM 版本 (7A218) 更新 Xcode 后编译 mac os 项目时遇到同样的错误。 Xcode 7 仅包含 10.11 sdk(您可以在 /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs 中查看它,它是 MacOSX10.11.sdk)。

    在编译时,xcode 将从 /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/System/Library/Frameworks 链接框架,但在运行时从/System/Library/Frameworks/ 我猜的。

    我在 mac 上有 OS X 10.10.5 (14F27)。要么我有我用 xcode 7 构建的静态库(你之前记得的 MacOSX10.11.sdk),然后我已经链接到我的项目。运行后我得到运行时错误为

    dyld:未找到符号:_NSArray0

    我认为这是因为该库已使用 mac os sdk 10.11 中的 CoreFoundation.framework 编译,但在运行时已链接到 /System/Library/Frameworks/ 中的 CoreFoundation.framework,其中版本为 10.10(作为操作系统版本) .

    我是如何解决这个问题的。我的朋友有 xcode 6,我从那里拿了 mac os sdk 10.10(你记得在 /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs 中,名称是 MacOSX10.10.sdk)并将其添加到我的 Xcode 中。然后我用 10.10 sdk 重建了我的静态库(您可以使用 '-sdk macosx10.10' 参数从 cli 编译或在 Build Settings => Base SDK 中设置 build sdk)。问题解决后。

    我假设对于 iOS,您可以应用相同的策略。

    【讨论】:

      【解决方案7】:

      我在安装了第一个 iOS 9 beta 的设备上运行 Xcode 7.0 beta 6 时遇到了完全相同的崩溃,但是在使用模拟器时没有发生崩溃。

      将我的 iPhone 更新到 iOS 9 beta 5 后,崩溃停止了。

      【讨论】:

      • 感谢约翰尼和马特。您如何建议进行向后兼容性测试。暂时我假设 iOS8 上的新用户会搜索该应用程序并安装我们的应用程序会崩溃。想法?
      • 我知道这对您来说可能是可行的,但我保留了两台设备,一台装有 iOS 8,一台装有 iOS 9。我还安装了 Xcode 6.4 和 Xcode 7.0 测试版,因此我能够继续为这两个版本进行开发。
      • 另外,Apple 不会让 iOS 8 用户下载针对 iOS 9 的应用程序,因此您应该只担心版本等于或高于您的目标部署。我几乎肯定苹果会让他们下载 iOS 8 版本,即使你发布了 iOS 9 版本,只要你在应用商店中已经有可用的版本。
      • 我仍然认为这是我当前的 iOS8 版本与昨天的新 XCODE 版本的问题。这可能是一个严重的问题,因为不立即升级到 iOS9 并安装应用程序的人将无法加载应用程序。 :(
      猜你喜欢
      • 1970-01-01
      • 2015-09-22
      • 2015-10-26
      • 2015-10-17
      • 1970-01-01
      • 2014-09-15
      • 2014-08-11
      • 2014-10-29
      • 2020-08-14
      相关资源
      最近更新 更多