我的静态库中有类别。任何应用程序开发人员都应将-ObjC标志设置为“Other Linker Flags”以正确使用我的静态库。它适用于iPhone设备/ iPhone模拟器2.x和iPhone模拟器3.0。但它崩溃了iPhone设备3.0。正如in this article所写,它是新的链接器错误。他们建议再使用一个链接器标志:-all_load。但是,当我添加此标志时,构建也会失败,因为存在重复的符号。
如何在iPhone设备3.0的静态库中使用类别?有什么建议吗?
答案 0 :(得分:10)
我们ran into the same problem(3.0以下,-ObjC不再在类别中链接)Core Plot framework内。我只能说,对于我们来说,我们能够将-all_load选项添加到目标应用程序中的Other Linker Flags,并消除了运行时错误。我们没有看到任何重复符号的警告。
我已经为链接器行为提交了一份错误报告,因为我确信其他人也有。
答案 1 :(得分:1)
它是一个由于试图通过黑客修复另一个错误而导致的错误。 类别错误的-all_load修复是完全黑客攻击。
有关详情,请参阅here。
答案 2 :(得分:0)
当您将-all_load添加到其他链接器标志时,请确保所有框架,库使用都与您的目标应用程序链接。否则,它将无法编译。在我的情况下,我有一个MKMapView类别,并没有将MapKit框架与我的目标应用程序绑定,因此在构建时找不到类别所属的类。
答案 3 :(得分:0)
我遇到了同样的“重复符号”问题。如果没有-all_load
标志,我们还必须在应用程序链接行中包含我们库链接的所有库。从应用链接线中删除这些解决了这个问题。