首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >isKindOfClass与isMemberOfClass的iOS差异

isKindOfClass与isMemberOfClass的iOS差异
EN

Stack Overflow用户
提问于 2010-09-07 03:38:48
回答 3查看 40.9K关注 0票数 158

isKindOfClass:(Class)aClass函数和isMemberOfClass:(Class)aClass函数有什么不同?我知道这是一个小东西,一个是全局的,而另一个是精确的类匹配,但我需要有人来指定哪一个是请的。

在Swift isKind(of aClass: AnyClass)isMember(of aClass: AnyClass)中。

EN

回答 3

Stack Overflow用户

发布于 2010-09-07 03:43:37

假设

代码语言:javascript
复制
@interface A : NSObject 
@end

@interface B : A
@end

...

id b = [[B alloc] init];

然后

代码语言:javascript
复制
[b isKindOfClass:[A class]] == YES;
[b isMemberOfClass:[A class]] == NO;

基本上,如果实例恰好属于指定的类,则-isMemberOfClass:为true,而如果实例恰好属于指定的类,或者实例的祖先之一属于指定的类,则-isKindOfClass:为true。

-isMemberOfClass:很少使用。

票数 48
EN

Stack Overflow用户

发布于 2011-07-27 15:41:06

isKindOfClass->当对象是该类的实例或继承自它的类的实例时,返回YES。

isMemberOfClass:如果object是该类的实例,则返回YES,但在case中返回No :从该类继承的类的实例。

示例在jtbandes回答中已经足够好了。

票数 2
EN

Stack Overflow用户

发布于 2012-01-11 06:03:02

由于类簇的存在,isMemberOfClass可以给你一个你可能没有预料到的答案。在许多情况下,您的最佳选择更可能是-(BOOL)conformsToProtocol:(SEL)aSelector或-SEL也就是说,如果它们能满足你的需求,那么最好对它们进行测试,而不是测试class/subclass。

有关NSObject类和协议,请参阅苹果文档:

http://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Classes/NSObject_Class/Reference/Reference.html#//apple_ref/occ/cl/NSObject

http://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Protocols/NSObject_Protocol/Reference/NSObject.html#//apple_ref/occ/intf/NSObject

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3653929

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档