注意:是的,我知道 iOS 6 处于保密协议之下。这个问题与 iOS 6 无关,因为我引用的类在 iOS 6 中是新的。
我正在创建一个用于我的几个项目的静态框架,它允许我在 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 是一个相当大的框架,并且弱链接需要额外的时间。
所以基本上,我能做些什么来弱链接静态库本身中的这个类?