将具有相同 class 名称、接口和实现的两个框架(或包)加载到运行时中。发生什么了?

Two frameworks (or bundles) with the same class name, interface and implementation, are loaded into a runtime. What happens?

假设我通过 dlopen() 动态加载一个框架,或者通过 [NSbundle load] 加载一个包,该包具有与运行时中已有的同名的 class。运行时会发生什么?哪个 class 定义获胜?

很可能,第二个会赢。但是,几乎可以肯定这是一个实施细节,可能会随 Apple 的心血来潮而改变。

这是明确未定义的行为。事实上,如果你通过 NSBundle API 加载一个包,它实际上会给出一条错误消息,说它检测到冲突,并且关于它如何处理冲突的行为是未定义的。

基本规则是不要那样做。 ;-)