今天突然被人遇到如此一个问题,假如有一个类,它有两个分类,分类中都有个叫test的属性,那么调用时,先调用谁的问题。
其实我的内心是这样的

但无论怎么说买还是引起了我的好奇心,于是,我们动手写了个demo,工程看起来是这样的

ViewController有两个分类,他们的内部看起来是这样的


我们的ViewController开始调用

结果是这样的

并且有警告

看来编译器发现了我们有相同的属性,但其实警告的内容是发现了相同的实例方法,冲突了。
那如果,我们ViewController+aaaaa这个类删了呢,很显然

综上,这可能和加载顺序有关,在编译完所有文件,并最后生成可执行文件时(执行文件是Mach-o格式),mach-o文件的头部,会有具体的加载信息,并且在编译时,不会再加载相同的属性,并发出警告。

网友评论