我正在使用一些第三方软件来帮助使用 Xcode 4.3.2 编写 iPad 应用程序。该软件是开源的,通常设置为使其代码与开发人员为应用程序编写的任何代码一起编译。因为我在许多地方都使用过该软件,所以我决定将其构建为 iOS 模拟器的静态库。
我能够构建库,并将一个应用程序转换为链接到该库,而不是编译原始源代码。但是,当我在模拟器上运行该应用程序时,我收到一条错误消息,显示无法识别的选择器已发送到实例。
我已验证该程序已成功使用部分静态库。但是,有一段代码试图在对象上调用方法,并且失败了。被调用的方法实际上并未在该对象的接口(interface)中定义。相反,它是在一个附加模块中提供的,该模块为该对象的类定义了一个类别。该模块的头文件已正确包含,编译器应该能够找到类别方法并将其应用于对象,但在运行时,出现上述错误。
我使用'nm' 命令验证静态库中是否存在类别方法。这是输出示例:
nm libStaticLibrary.a | grep categoryMethod
00000130 t -[SomeClass(Category) categoryMethod:]
0000354c s -[SomeClass(Category) categoryMethod:].eh
人们对如何使这个库与所需的应用程序正确工作有什么想法?
最佳答案
您的第 3 方框架可能会使用现有(苹果)类上的类别。但是要加载/查找类别,您需要在 Other Linker Flags
-ObjC
标志
关于objective-c - 静态 iOS 库中无法识别的选择器调用类别方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10442653/