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

标签 objective-c ios unrecognized-selector

我正在使用一些第三方软件来帮助使用 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

下的build设置中添加 -ObjC 标志

buildsettings

关于objective-c - 静态 iOS 库中无法识别的选择器调用类别方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10442653/

相关文章:

iPhone:具有属性的类别 + "unrecognized selector sent to instance"异常

objective-c - 此崩溃日志中出了什么问题

iphone - 如何判断 iPhone 是否处于沙盒模式?

ios - SFSafariViewController 在 iphone 上缺少最高位

ios - 在 NEPacketTunnelProvider 中获取 UDP 数据包详细信息

iOS swift : Button Action in a separate class file

ios - Objective C 和线程

ios - 通过替换 Windows 根 Controller 在多个 Storyboard之间移动

ios - 为什么 UISlider 的自定义缩略图会像素化? (里面的图片和代码)

iOS SDWebImage 无法识别的选择器完整 block