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