isKindOfClass和isMemberOfClass的区别

isKindOfClass和isMemberOfClass的区别

  isKindOfClass和isMemberOfClass 都是NSObject的比较Class的方法  但两个有很大区别:  isKindOfClass来确定一个对象是否是一个类的成员,或者是派生自该类的成员  isMemberOfClass只能确定一个对象是否是当前类的成员  例如:我们已经成NSObject派生了自己的类,isMemberOfClass不能检测任何的类都是基于NSObject类这一事实,而isKindOfClass可以。  [[NSMutableData data] isKindOfClass:[NSData class]]; // YES       [[NSMutableData data] isMemberOfClass:[NSData class]]; // NO

例:- (void) testIsKindOfClass {    Class1 *c1=[Class1 new];    if ([c1 isKindOfClass: [NSObject class]]) {        NSLog(@"c1 is a kind of NSObject.");    } if ([c1 isMemberOfClass:[Class1 class]]) {        NSLog(@"c1 is Member of Class1 !");    } if (![c1 isMemberOfClass:[NSObject class]]) {        NSLog(@"c1 is‘t Member of NSObject !");    }}

输出结果;c1 is a kind of NSObject .c1 is Member of Class1 !c1 is‘t Member of NSObject !
时间: 2024-10-17 13:22:45

isKindOfClass和isMemberOfClass的区别的相关文章

OC中isKindOfClass与isMemberOfClass的区别

先给出官方介绍 isKindOfClass:Returns a Boolean value that indicates whether the receiver is an instance of given class or an instance of any class that inherits from that class. isMemberOfClass:Returns a Boolean value that indicates whether the receiver is

isKindOfClass和isMemberOfClass 的区别

判断对象类型 -(BOOL) isKindOfClass: classObj判断是否是这个类或者这个类的子类的实例 -(BOOL) isMemberOfClass: classObj 判断是否是这个类的实例 测试实例: 新建Person类继承NSObject,新建Teacher类继承Person 新建Person类: #import <Foundation/Foundation.h> @interface Person : NSObject { NSString *name; } -(void

isKindOfClass和isMemberOfClass 区别

isKindOfClass和isMemberOfClass 都是NSObject的比较Class的方法. 但两个有很大区别: isKindOfClass来确定一个对象是否是一个类的成员,或者是派生自该类的成员. isMemberOfClass只能确定一个对象是否是当前类的成员. 例如: NSArray *arr1 = [NSArrayarray]; NSArray *arr2 = [NSArrayarray]; NSObject *ob = [[NSObjectalloc] init]; NSL

isKindOfClass和isMemberOfClass

https://github.com/ming1016/study/wiki/Objc-Runtime 先看看isKindOfClass和isMemberOfClass在Object.mm中的实现 - (BOOL)isKindOf:aClass { Class cls; for (cls = isa; cls; cls = cls->superclass) if (cls == (Class)aClass) return YES; return NO; } - (BOOL)isMemberOf:

isKindOfClass,isMemberOfClass

- (BOOL)isKindOfClass:(Class)aClass; - (BOOL)isMemberOfClass:(Class)aClass; 特点: 1.isKindOfClass   判断是否是这个类(包括其父类及根类)或者这个类的子类的实例 2. isMemberOfClass  判断是否是这个类的实例 3.二者都可以判断是否是这个类

isKindOfClass:和isMemberOfClass:-b

isKindOfClass: Returns a Boolean value that indicates whether the receiver is an instance of given class or an instance of any class that inherits from that class. (required) isKindOfClass能确定一个对象是否是一个类的成员,或者是派生自该类的成员 isMemberOfClass: Returns a Boolea

NSObject头文件解析 / 消息机制 / Runtime解读 (一)

NSObject头文件解析 当我们需要自定义类都会创建一个NSObject子类, 比如: #import <Foundation/Foundation.h> @interface ClassA : NSObject @end 那么NSObject里面具体有什么呢? 我们点到它的头文件里面去看看 @interface NSObject <NSObject> { Class isa OBJC_ISA_AVAILABILITY; //每个NSObject对象都拥有一个Class类作为成员

多年iOS开发经验总结(一)

总结了几个月的东西终于能和大家分享了,不多说,直接看东西! 1.禁止手机睡眠 1 [UIApplication sharedApplication].idleTimerDisabled = YES; 2.隐藏某行cell 1 2 3 4 5 6 7 8 9 10 11 - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { // 如果是你需要隐藏的那一行,返回

ios开发一些基本按键

1.禁止手机睡眠 1 [UIApplication sharedApplication].idleTimerDisabled = YES; 2.隐藏某行cell 1 2 3 4 5 6 7 8 9 10 11 - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { // 如果是你需要隐藏的那一行,返回高度为0     if(indexPath.row == Y