Skip to content

Instantly share code, notes, and snippets.

@NikoTung
Created November 18, 2014 01:31
Show Gist options
  • Save NikoTung/d1a30efeeacc6d1d5df4 to your computer and use it in GitHub Desktop.
Save NikoTung/d1a30efeeacc6d1d5df4 to your computer and use it in GitHub Desktop.
meta-class
#import <Foundation/Foundation.h>
@interface SuperClass : NSObject
@end
@implementation SuperClass
@end
@interface SubClass : SuperClass
@end
@implementation SubClass
@end
NSLog(@"NSObject class :%p",object_getClass([NSObject class]));
NSObject *rootObject = [NSObject new];
Class rootClassFromObject = object_getClass(rootObject);
NSLog(@"root class from object (before):%p ",rootClassFromObject);
while (rootClassFromObject != object_getClass([NSObject class])) {
NSLog(@"root class from object :%p",object_getClass(rootClassFromObject));
rootClassFromObject = object_getClass(rootClassFromObject);
}
SuperClass *superclassObject = [SuperClass new];
Class superClassFromObject = object_getClass(superclassObject);
NSLog(@"super class from object (before) :%p",superClassFromObject);
while (superClassFromObject != object_getClass([NSObject class])) {
NSLog(@"super class from object :%p",object_getClass(rootClassFromObject));
superClassFromObject = object_getClass(superClassFromObject);
}
SubClass *subClassObject = [SubClass new];
Class subClassFromObject = object_getClass(subClassObject);
NSLog(@"sub class from object :%@",subClassFromObject);
while (subClassFromObject != object_getClass([NSObject class])) {
NSLog(@"sub class from object :%p",object_getClass(subClassFromObject));
subClassFromObject = object_getClass(subClassFromObject);
}
Class superClassFromSubClass = class_getSuperclass(subClassFromObject);
NSLog(@"super class from subclass :%p",superClassFromSubClass);
while (superClassFromSubClass != object_getClass([NSObject class])) {
NSLog(@"super class from sub class object :%p",object_getClass(subClassFromObject));
superClassFromSubClass = object_getClass(superClassFromSubClass);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment