该错误已经演示here。它说,对于64位和iPhone OS应用程序,有一个链接器错误阻止-ObjC从仅包含类别而不包含类的静态库加载对象文件。解决方法是使用-all_load或-force_load标志。
事实上,我不知道错误是否已修复,我找不到任何相关内容。是否有人向我展示了苹果对修复错误的一些参考?
如果错误确实已修复,是否意味着当我的静态库只包含类别而没有类时,我不需要将-all_load(或-force_load)添加到我的项目中?
感谢任何回答。
答案 0 :(得分:2)
这已在Xcode 4 dot中修复,并且肯定在Xcode 5中。这就是说我分发了一个静态库,它只在其OWN类(以及单独的文件中)使用类别,并且使用它的应用程序将崩溃而不会旗。问我怎么知道这个(一个客户忘记添加标志!)
什么"没有课程的类别"表示您有一个文件 - .m文件实现 - 其中唯一的代码是一个或多个类别。反过来是一个类实现,后面是该类的类。什么是黑暗是一个类的实现遵循或前面的类别到另一个类 - 我猜这将工作,但你必须测试它。
您可以尝试实际看到这一点!我实际上已将其添加到我的静态库中,因此如果缺少-ObjC标志,我可以发出警告(如果您开发库,也可以执行此操作):
创建一个全局变量:
BOOL categoriesLoaded;
在您的某个类别中,添加以下内容(您可以将其移动到实验中)
@implementation SomeClass (SomeName)
+ (void)load
{
categoriesLoaded = YES;
}
然后在主库类的方法中,确保早期调用的方法,测试是否设置了标志。如果不是,则未设置-ObjC
标志。然后你可以采取一些严肃的行动,比如记录一些东西并调用exit()。如果您的类别没有加载,那么无论如何都会崩溃,在某些代码中会以某种奇怪的方式崩溃,这对任何人来说都没有意义。