Adding Classes
方法声明:
Class objc_allocateClassPair ( Class superclass, const char *name, size_t extraBytes );
描述:创建一个新的类和元类;
superclass |
新建类的父类,如果传nil则创建新的根类 |
name |
新建类的名称 |
extraBytes |
传0即可 |
方法声明:
void objc_disposeClassPair ( Class cls );
描述:销毁一个类及其相关的元类。当cls类或者它的子类的实例还存在,则不能调用这个方法;也就是先要销毁类和子类的所有实例后才能销毁类;
cls |
将被销毁的类. 这个类必须是通过 |
方法声明:
void objc_registerClassPair ( Class cls );
描述:注册通过objc_allocateClassPair方法创建的类;
方法声明:
Class objc_duplicateClass ( Class original, const char *name, size_t extraBytes );
描述:键值观察者里面用到的,你不能调用次方法,因此忽略;
举例:
Class JunClass = objc_allocateClassPair([NSObject class], "JunDemo", 0);
BOOL isOk = NO;
isOk = class_addIvar(JunClass,"myVar", sizeof(id), log2(sizeof(id)), "@");
isOk == YES ? nil : NSLog(@"failed on class_addIvar");
objc_registerClassPair(JunClass);
id myobj = [[JunClass alloc] init];
[myobj setValue:@"test" forKey:@"myVar"];
NSLog(@"myVar: %@", [myobj valueForKey:@"myVar"]);
myobj = nil;//当JunClass类或者它的子类的实例还存在,则不能调用objc_disposeClassPair这个方法;因此这里要先销毁实例对象后才能销毁类;
objc_disposeClassPair(JunClass);