今天突然被人遇到如此一个问题,假如有一个类,它有两个分类,分类中都有个叫test的属性,那么调用时,先调用谁的问题。
其实我的内心是这样的
11.jpeg
但无论怎么说买还是引起了我的好奇心,于是,我们动手写了个demo,工程看起来是这样的
22.png
ViewController有两个分类,他们的内部看起来是这样的
屏幕快照 2016-03-03 下午5.05.13.png 屏幕快照 2016-03-03 下午5.05.17.png
我们的ViewController开始调用
屏幕快照 2016-03-03 下午5.06.27.png
结果是这样的
屏幕快照 2016-03-03 下午5.07.31.png
并且有警告
屏幕快照 2016-03-03 下午5.22.02.png
看来编译器发现了我们有相同的属性,但其实警告的内容是发现了相同的实例方法,冲突了。
那如果,我们ViewController+aaaaa这个类删了呢,很显然
屏幕快照 2016-03-03 下午5.26.43.png综上,这可能和加载顺序有关,在编译完所有文件,并最后生成可执行文件时(执行文件是Mach-o格式),mach-o文件的头部,会有具体的加载信息,并且在编译时,不会再加载相同的属性,并发出警告。
333.jpeg
网友评论