gpt4 book ai didi

ios - "dyld: Symbol not found:"静态库中 iOS 6 独有的类

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:06:42 25 4
gpt4 key购买 nike

注意:是的,我知道 iOS 6 处于保密协议(protocol)之下。这个问题与 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 是一个相当大的框架,而弱链接需要额外的时间。

那么基本上,我该怎么做才能在静态库本身中弱链接这个类?

最佳答案

我猜你的 IPHONEOS_DEPLOYMENT_TARGET 没有设置为 iOS 5?我只是有同样的错误,因为它已经在iOS 6上。将其设置为iOS 5后,一切正常。

您可以在 Target->BuildSettings->IPHONEOS_DEPLOYMENT_TARGET 和 Target->Summary->iOS Application Target 下找到配置。

另一种避免此类错误的方法是:

Class myClass = NSClassFromString(@"NewClass")
if( myClass ) {
NSObject *myResult = [myClass aMethod:@"Hello World"];
}

关于ios - "dyld: Symbol not found:"静态库中 iOS 6 独有的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12080751/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com