//动态创建类
- (void)createClass{
//创建类对 [NSObject class]:父类,"ZFCat":类名,0:所占字节数,一般写0
Class ZFCat = objc_allocateClassPair([NSObject class],"ZFCat", 0);
//属性名称
NSString *name = @"name";
//添加属性 ,必须在注册类之前添加
class_addIvar(ZFCat, name.UTF8String, sizeof(id), log2(sizeof(id)), @encode(id));
//添加方法 ,可在注册类之后添加
class_addMethod(ZFCat, @selector(jump), (IMP)jump, "v@:");
//注册类
objc_registerClassPair(ZFCat);
id cat = [ZFCat new];
[cat setValue:@"zf" forKey:name];
NSLog(@"name=%@",[cat valueForKey:name]);
[cat performSelector:@selector(jump)];
}
void jump(){
NSLog(@"跳");
}
网友评论