我的静态库中有类别。任何应用程序开发人员都应将 -ObjC 标志设置为“其他链接器标志”以正确使用我的静态库。它适用于 iPhone 设备/iPhone Simulator 2.x 和 iPhone Simulator 3.0。但它会在 iPhone 设备 3.0 上崩溃。如本文所述,这是新的链接器错误。他们建议多使用一个链接器标志:-all_load。但是当我添加这个标志时,构建也会失败,因为有重复的符号。
如何在 iPhone 设备 3.0 的静态库中使用类别?有什么建议么?
我的静态库中有类别。任何应用程序开发人员都应将 -ObjC 标志设置为“其他链接器标志”以正确使用我的静态库。它适用于 iPhone 设备/iPhone Simulator 2.x 和 iPhone Simulator 3.0。但它会在 iPhone 设备 3.0 上崩溃。如本文所述,这是新的链接器错误。他们建议多使用一个链接器标志:-all_load。但是当我添加这个标志时,构建也会失败,因为有重复的符号。
如何在 iPhone 设备 3.0 的静态库中使用类别?有什么建议么?
我们在Core Plot 框架中遇到了同样的问题(在 3.0 下,-ObjC 不再链接类别)。我只能说,对我们来说,我们能够将 -all_load 选项添加到目标应用程序中的其他链接器标志,这消除了运行时错误。我们没有看到任何重复符号的警告。
我已经提交了链接器行为的错误报告,我相信其他人也有。
它是由于尝试通过 hack 修复另一个错误而引起的错误。类别错误的 -all_load 修复完全是 hack。
请参阅此处了解更多信息。
我遇到了同样的“重复符号”问题。如果没有-all_load
标志,我们还必须在应用链接行中包含我们的库链接的所有库。从应用程序链接行中删除这些解决了这个问题。
当您将 -all_load 添加到其他链接器标志时,请确保库使用的所有框架都与您的目标应用程序链接。否则,它将无法编译。就我而言,我有一个 MKMapView 类别,并且没有将 MapKit 框架与我的目标应用程序绑定,因此在构建时找不到该类别所属的类。