isKindOfClass和isMemberOfClass

定义:

isKindOfClass:确定一个对象是否是一个类的成员,或者是派生自该类的成员。

 isMemberOfClass:确定一个对象是否是当前类的成员。

小知识:

isMemberOfClass不能检测任何的类都是基于NSObject类这一事实,而isKindOfClass可以。

后记:

        类簇实际上是Foundation框架下的一种设计模式,它管理了一组隐藏在公共接口下的私有类。在Cocoa中,许多类实际上是以类簇的方式实现的,即它们是一组隐藏在通用接口之下的与实现相关的类。例如创建NSString对象时,实际上获得的可能是NSLiteralString、NSCFString、NSSimpleCString、NSBallOfString或者其他未写入文档的与实现相关的对象。所以,请不要尝试去创建NSString、NSArray或NSDictionary的子类。如果必须添加或修改某个方法,可以使用类目的方式。

        对于类簇使用isMemberOfClass是不允许的,因为类簇是由抽象公共类管理的一组私有类,抽象公共类并不是真正的实例的父类,类簇中真正的类从属关系被隐藏了,所以使用isMemberOfClass(UIButton返回YES)结果可能不准确。

        如NSString、NSArray、NSDictionary、NSData、NSSet、NSMutableString、NSMutableArray、NSMutableDictionary、NSMutableData、NSMutableSet、NSNumber等都是以类簇方式实现的。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容