isKindOfClass:(Class)aClass
函数和isMemberOfClass:(Class)aClass
函数有什么不同?我知道这是一个小东西,一个是全局的,而另一个是精确的类匹配,但我需要有人来指定哪一个是请的。
在Swift isKind(of aClass: AnyClass)
和isMember(of aClass: AnyClass)
中。
发布于 2010-09-07 03:43:37
假设
@interface A : NSObject
@end
@interface B : A
@end
...
id b = [[B alloc] init];
然后
[b isKindOfClass:[A class]] == YES;
[b isMemberOfClass:[A class]] == NO;
基本上,如果实例恰好属于指定的类,则-isMemberOfClass:
为true,而如果实例恰好属于指定的类,或者实例的祖先之一属于指定的类,则-isKindOfClass:
为true。
-isMemberOfClass:
很少使用。
发布于 2011-07-27 15:41:06
isKindOfClass->当对象是该类的实例或继承自它的类的实例时,返回YES。
isMemberOfClass:如果object是该类的实例,则返回YES,但在case中返回No :从该类继承的类的实例。
示例在jtbandes回答中已经足够好了。
发布于 2012-01-11 06:03:02
由于类簇的存在,isMemberOfClass可以给你一个你可能没有预料到的答案。在许多情况下,您的最佳选择更可能是-(BOOL)conformsToProtocol:(SEL)aSelector或-SEL也就是说,如果它们能满足你的需求,那么最好对它们进行测试,而不是测试class/subclass。
有关NSObject类和协议,请参阅苹果文档:
https://stackoverflow.com/questions/3653929
复制相似问题