这些继承检查有什么区别?

时间:2011-08-28 02:00:54

标签: objective-c

我已经看到Objective-C代码的示例显然使用不同的方法进行相同/类似的检查。我想知道这些有什么区别:

isKindOfClass

isMemberOfClass

isSubclassOfClass

还请注意是否有我在这里没有提到的支票,因为我正在学习,目前对事情的指挥很差。

2 个答案:

答案 0 :(得分:4)

这些都是实例方法:

isKindOfClass:对象是类的实例,还是该类的子类的实例? isMemberOfClass:对象是类的实例吗? (不包括子类)。

而最后一个是类方法,(例如[NSString isSubclassOfClass:[NSObject class]])。

isSubclassOfClass: 是否等于另一个类或该类的子类?

答案 1 :(得分:1)

google上有这么多链接,特别是在stackoverflow上被多次询问,请在评论中查看我添加的链接,

iPhone SDK difference between isKindOfClass and isMemberOfClass

尝试阅读他们的文档,这将对您有所帮助。

<强>被修改

假设您有一个类名External,而在External类内,您有一个名为Internal的子类。我希望你知道类可以有一个可以访问主类属性的子类。所以通过这种方法你可以问一个Internal类,你是外类的子类吗?

[Internal isSubclassOfClass:External]

返回值为BOOL

  • 如果接收类是-aClass的子类或与-aClass相同,则为YES 否则没有。

Apple的文档网站上提供了更多阅读

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