二十九、Runtime之(十二)方法isKindOfClass与

2019-05-09  本文已影响0人  yqc5521
isKindOfClass与isMemberOfClass的底层实现

1. -(Bool)isMemberOfClass:(Class)cls

解释: 消息接收者的class是不是传入的class

2. -(Bool)isKindOfClass:(Class)cls

解释:for循环遍历查找,先看自己的class是不是与传入的class相同,如果不同,查找自己的父类是否与传入的class相同,如果相同,返回YES,如果依然不同,返回NO;
概括

消息接受者或消息接收者的父类是否属于class,换言之,消息接收者是否属于传入的class或class的子类。

3. +(Bool)isMemberOfClass:(Class)cls

解释: 消息接收者的元类对象是不是传入的class

3. +(Bool)isKindOfClass:(Class)cls

解释: 消息接收者的元类对象是否属于传入的class或class的子类
4.面试题

解析:
1.NSObject的元类属于NSObject的子类(NSObject元类的父类为NSObject)。
2.NSObject的元类不是NSObject类。
3.MJPerson的元类不属于MJPerson类。
4.MJPerson的元类不是MJPerson类。


面试题
上一篇下一篇

猜你喜欢

热点阅读