无法识别的选择器调用静态 iOS 库中的类别方法

2024-05-14

我正在使用一些第三方软件来帮助使用 Xcode 4.3.2 编写 iPad 应用程序。该软件是开源的,通常经过设置,因此其代码将与开发人员为应用程序编写的任何代码一起编译。因为我在很多地方使用该软件,所以我决定将其构建为 iOS 模拟器的静态库。

我能够构建该库,并将一个应用程序转换为链接到该库,而不是编译原始源代码。但是,当我在模拟器上运行该应用程序时,我收到一条错误消息:无法识别的选择器发送到实例.

我已经验证该程序成功使用了静态库的部分内容。然而,有一段代码尝试调用对象的方法,并且发生了失败。被调用的方法实际上并未在该对象的接口中定义。相反,它是在一个附加模块中提供的,该模块定义该对象的类的类别。该模块的头文件已正确包含,编译器应该能够找到类别方法并将其应用于对象,但在运行时,会出现上述错误。

我使用“nm”命令来验证静态库中是否存在类别方法。以下是输出的示例:

nm libStaticLibrary.a | grep categoryMethod
00000130 t -[SomeClass(Category) categoryMethod:]
0000354c s -[SomeClass(Category) categoryMethod:].eh

人们对如何使这个库与所需的应用程序正确工作有什么想法?


您的第 3 方框架可能使用现有(苹果)类的类别。但要加载/查找类别,您需要添加-ObjC标记在构建设置下Other Linker Flags

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

无法识别的选择器调用静态 iOS 库中的类别方法 的相关文章

随机推荐