两个具有相同符号的框架

我在我的Xcode项目中有两个框架,它们都定义了一个具有相同名称的类(B.framework和C.framework都有一个名为MyClass的类),导致了如下几个警告:

Duplicate symbol _OBJC_METACLASS_$_MyClass originally in B.framework/B(MyClass.o) now lazily loaded from C.framework/C(MyClass.o) Duplicate symbol _OBJC_CLASS_$_MyClass originally in B.framework/B(MyClass.o) now lazily loaded from C.framework/C(MyClass.o) 

然后在运行时只加载其中一个实现,并尝试使用另一个会导致“无法识别的select器发送到实例”,因为它们是完全不同的类(即使它们具有相同的名称)。

我直接在我的代码中使用MyClass实现之一,但其他框架只在内部使用它的MyClass 我不知道为什么它甚至出口 (它甚至没有在框架头文件中提到,我用nm来查看符号)。

我怎样才能使这两个框架的工作?

Obj-C中没有“导出”类。 或者说,没有“非出口”类的东西。 这个问题正是为什么强烈build议在所有的Obj-C代码上使用2或3个字母的前缀的原因。 你唯一的解决scheme(除了不使用这些框架)是编辑一个(或两个)框架来改变类名,或者如果你没有访问源,那么你需要联系供应商,并要求他们做出改变。