+ (id)self { return (id)self;}- (id)self { return self;}+ (Class)class { return self;}- (Class)class { return object_getClass(self);}+ (Class)superclass { return self->superclass;}- (Class)superclass { return [self class]->superclass;}+ (BOOL)isMemberOfClass:(Class)cls { return object_getClass((id)self) == cls;}- (BOOL)isMemberOfClass:(Class)cls { return [self class] == cls;}+ (BOOL)isKindOfClass:(Class)cls { for (Class tcls = object_getClass((id)self); tcls; tcls = tcls->superclass) { if (tcls == cls) return YES; } return NO;}- (BOOL)isKindOfClass:(Class)cls { for (Class tcls = [self class]; tcls; tcls = tcls->superclass) { if (tcls == cls) return YES; } return NO;}+ (BOOL)isSubclassOfClass:(Class)cls { for (Class tcls = self; tcls; tcls = tcls->superclass) { if (tcls == cls) return YES; } return NO;}复制代码
问如下打印啥?
NSLog(@"[self class]%@",[self class]); NSLog(@"[super class]%@",[super class]); NSLog(@"=================="); NSLog(@"[self superClass]%@",[self superclass]); NSLog(@"[super superClass]%@",[super superclass]);复制代码
NSLog(@"%d",[[NSObject class] isKindOfClass:[NSObject class]]); NSLog(@"%d",[[NSObject class] isMemberOfClass:[NSObject class]]); NSLog(@"%d",[[Person class] isKindOfClass:[Person class]]); NSLog(@"%d",[[Person class] isMemberOfClass:[Person class]]);复制代码