在类继承体系中查询类型信息
isMemberOfClass: 能够判断出对象是否为某个特定类的实例, 而 isKindOfClass: 则能够判断出对象是否为某类 或 其派生类的实例, 例如;
NSMutableDictionary * dict = [NSMutableDictionary new];
[dict isMemberOfClass: [NSDictionary class]]; 为 NO
[dict isMemberOfClass: [NSMutableDictionary class]]; 为 YES
[dict isKindOfClass: [NSDictionary class]]; 为 YES
[dict isKindOfClass: [NSArray class]]; 为 NO
总结:
每个实例都有一个指向 Class 对象的指针, 泳衣表明其类型, 而这些 Class 对象则构成了类的继承体系.
如果对象类型无法在编译期确定, 那么就应该使用类型信息查询方法来探知.
尽量使用类型信息查询方法来确定对象类型, 而不要直接比较类对象, 因为某些对象可能实现了消息转发功能.
网友评论