我正在示例应用程序FrameworkA
中导入两个不同的Objective-C框架FrameworkB
和MyApp
,并且这两个框架定义了相同的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)抛出错误?