为什么在两个不同的iOS框架中相同类名没有链接器错误?

时间:2019-03-06 22:01:37

标签: ios frameworks linker-errors

我正在示例应用程序FrameworkA中导入两个不同的Objective-C框架FrameworkBMyApp,并且这两个框架定义了相同的Person类。

如果运行MyApp,则会在控制台上显示以下警告。

objc[27167]: Class Person is implemented in both
    /private/var/containers/Bundle/Application/9762DB63-21E9-4592-B875-
6DF6F373FFD0/MyApp.app/Frameworks/FrameworkA.framework/FrameworkA 
(0x100b18100) and 
    /private/var/containers/Bundle/Application/9762DB63-21E9-
4592-B875-6DF6F373FFD0/MyApp.app/Frameworks/FrameworkB.framework/FrameworkB
 (0x100b30100). 
One of the two will be used. Which one is undefined.

当(1)在两个不同的iOS框架中存在相同的类名称时,为什么只收到警告而不是链接器错误? 我知道(2)由于名称空间问题导致链接器错误,因此无法在一个框架内编译重复的类。

据我所知,对于这两种情况,链接器都将所有源代码和库/框架链接到一个可执行文件。但是,为什么链接程序不为情况(1)抛出错误?

0 个答案:

没有答案