【发布时间】:2012-08-22 20:18:45
【问题描述】:
注意:是的,我知道 iOS 6 处于保密协议之下。这个问题与 iOS 6 无关,希望我引用的类在 iOS 6 中是 new。
我正在创建一个用于我的几个项目的静态框架,它允许我在 iOS 6 中使用新的 API(如果可用),如果它不可用,它将回退到 iOS 5 等效项。然而,尽管我确保在使用它之前总是检查一个类是否有效:
if ([NewClass class]) {
NewClass *newClass = [[NewClass alloc] init];
// etc.
}
每当我在 iOS 5 模拟器中启动我的应用程序时,我都会收到以下错误:
dyld: Symbol not found: _OBJC_CLASS_$_NewClass
(其中 NewClass 代表 iOS 6 类)。
这似乎只是使用静态库的问题,就好像我在我的项目中包含直接引用 API 的某些文件并引用它们,它将毫无问题地启动。我什至尝试过弱链接静态库,但它仍然崩溃。唯一可行的选择是弱链接 UIKit,但我宁愿不必这样做,因为 UIKit 是一个相当大的框架,并且弱链接需要额外的时间。
所以基本上,我可以做些什么来弱链接静态库本身中的这个类?
【问题讨论】:
标签: ios xcode linker ios-simulator static-linking