[self class]和[super class] 消息传递机制

[self class]和[super class] 消息传递机制_第1张图片

打印出的结果都是phone

对第一条,系统会转为

[self class]和[super class] 消息传递机制_第2张图片

对此方法的接受者是self 当前对象

对[super class]而言 系统会转为

[self class]和[super class] 消息传递机制_第3张图片

由此可以看出  他们俩调用的都是当前对象phone,phone对象调用class方法,首先会在缓存中查找,没有再去当前类方法列表查找,phone类中也没有,所以就会去mobile中查找,也没有,最后查找到NSObject类中,找到class方法,调用。他俩的区别在于【self class】是在当前类Phone中开始查找,【super class】是从父类Mobile开始查找

[self class]和[super class] 消息传递机制_第4张图片

@dynamic修饰后的属性  不会马上生成set 和 get方法  只有在运行时才会生成

你可能感兴趣的:([self class]和[super class] 消息传递机制)