OC的运行时
前几天写代码,踩了运行时的一个小坑,假设存在两个类
1 |
|
当我们对 SubClass 进行初始化的时候,发现运行完毕的输出为
1 | 2017-09-11 23:10:19.925 : Sub |
原因
为什么会输出两个Sub而不是带有Super呢,是因为在运行时的时候 self总指向Instance本身 由于我们SubClass存在一个名为 logClassName 的函数
所以说在 SuperClass 执行时的所有函数调用会先对 SubClass 的 Instance 查询函数是否存在,在不存在的时候才会转发给Super,由于SubClass存在同名函数故被截断
也就是说在 SuperClass的Init方法中的 self仍指向的是SubClass