无法识别的类别选择器

时间:2015-01-21 14:00:26

标签: ios hyperlink frameworks categories

在framework1中,有一个私有类classA。如果我直接在app中使用framework1,一切都很好。

如果我使用' -ObjC'链接framework1和其他一些框架。和' -framework framework1' link flag生成复合框架2。当我在app中使用framework2时,它会因为没有找到classA类别中定义的方法而崩溃。

使用nm命令检查framework2的二进制对象,我可以找到私有类别。

这真的很奇怪,我不知道为什么。

代码是这样的。

Framework1 - > classA.m

@interface classA(Private)
+ (void)method1;
@end

@implementation classA(Private)
+ (void)method1{}
@end

@implementation classA
+ (void)method2
{
  [self method1];
}
@end

然后我将Framework1编译为可重定位格式。

在Framework2中,我导入了Framework1。添加" -ObjC"和#34; -framework Framework1"。然后将Framework2编译为可重定位。

在应用程序中使用Framework2,编译并运行就可以了。但是当触发classA的method2时,app会因为没有创建method1而崩溃。如果我直接在app中使用Framework1,一切都很好。

问题已结束! 我发现如果所有框架都编译为静态,并使用其他库管理器标志在framework2中嵌入framework1。并将-ObjC标志添加到上一个应用程序演示中。一切都很顺利。所有类别都已加载。

1 个答案:

答案 0 :(得分:0)

问题已结束!我发现如果所有框架都编译为静态,并使用其他库管理器标志在framework2中嵌入framework1。并将-ObjC标志添加到上一个应用程序演示中。一切都很顺利。所有类别都已加载。