Noo*_*ath 147 class objective-c hierarchy ios swift
isKindOfClass:(Class)aClass和isMemberOfClass:(Class)aClass功能有什么区别?我知道这是一个很小的东西,一个是全局的,而另一个是完全的类匹配,但我需要有人指定哪个是哪个.
Seb*_*lis 257
isKindOfClass: 如果接收者是指定类的实例或从指定类继承的任何类的实例,则返回YES.
YES 如果接收者是指定类的实例,则返回YES.
大多数情况下,您希望使用它isMemberOfClass:来确保您的代码也适用于子类.
在NSObject的协议参考说话,稍微介绍一下这些方法.
jtb*_*des 80
isKindOfClass:指示对象是否继承自给定的类isMemberOfClass:指示对象是否是给定类的实例.[[NSMutableData data] isKindOfClass:[NSData class]]; // YES
[[NSMutableData data] isMemberOfClass:[NSData class]]; // NO
ken*_*ytm 48
假设
@interface A : NSObject 
@end
@interface B : A
@end
...
id b = [[B alloc] init];
然后
[b isKindOfClass:[A class]] == YES;
[b isMemberOfClass:[A class]] == NO;
基本上,-isMemberOfClass:如果实例完全是指定的类,则为-isKindOfClass:true;如果实例完全是指定的类,或者实例的其中一个祖先属于指定的类,则为true.
-isMemberOfClass: 很少使用.