X类在Y和Z中实现.将使用其中一个

bug*_*ixr 12 objective-c

我有一个Objective-c"工具"(控制台)程序,它在运行时动态加载objective-c bundle.一些bundle文件共享来自同一框架的类,所以我得到了"将两个实现的类"消息转储到控制台.

它不会阻止任何工作,但在控制台上显示消息有点烦人.有没有办法防止它们被丢弃?是否有一种方法可以更改捆绑包,因此它们不会编译/链接相同的类?

Rav*_*mio 0

您是否尝试过仅将@interface共享类的标头添加到捆绑包中(以便编译器了解 API),而不添加代码文件@implementation

由于您正在链接一个包,因此链接器 ( ld) 不应该抱怨它无法找到给定类的实现 - 它将将此任务委托给动态链接器 ( dyld) ,一旦您在 main 中加载该包,动态链接器就会启动程序。dyld然后应该自动在包和程序之间建立所需的引用。