在为 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/图书馆/框架/我猜。
我在 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,您可以应用相同的策略。