【问题标题】:What is the difference between these inheritance checks?这些继承检查有什么区别?
【发布时间】:2011-11-05 07:47:07
【问题描述】:

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

isKindOfClass

isMemberOfClass

isSubclassOfClass

如果有我这里没有提到的检查,也请提及,因为我正在学习并且目前对事情的掌握很差。

【问题讨论】:

标签: objective-c


【解决方案1】:

这些都是实例方法:

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

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

isSubclassOfClass: class 是否等于另一个类,还是该类的子类?

【讨论】:

    【解决方案2】:

    谷歌上有很多链接,特别是在stackoverflow上被问过很多次,检查我在评论中添加的链接,

    iPhone SDK difference between isKindOfClass and isMemberOfClass

    也尝试阅读他们的文档,这会对您有很大帮助。

    已编辑

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

    [Internal isSubclassOfClass:External]
    

    返回值为BOOL

    • 如果接收类是 aClass 的子类或相同,则为是, 否则否。

    更多阅读可在 Apple 的文档网站上获得

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

    【讨论】:

    • 同意,但是 isSubclassOfClass 呢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-11
    • 1970-01-01
    • 2020-06-28
    • 1970-01-01
    • 2013-09-09
    相关资源
    最近更新 更多