我从网上搜到一些OC动态创建类,基本都是MRC版的,今天总结一下,做了一个ARC的
以下这个地址是一个MRC的动态创建类
http://blog.sina.com.cn/s/blog_5914638f0101helm.html
OC发展到现在,基本上没有人使用MRC开发功能了,除非是维护老的项目
ARC的创建方法如下
#import <Foundation/Foundation.h>
#import <objc/message.h>
int main(int argc, const char * argv[]) {
@autoreleasepool {
//动态创建类
//1.使用objc_allocateClassPair创建一个类Class
const char *className = "Person";
Class class = objc_getClass(className);
if(!class){
Class superClass = [NSObject class];
class = objc_allocateClassPair(superClass, className, 0);
}
//2.现在可以使用自定义的Person类
id instance = [[class alloc] init];
//3.给instance类添加一个属性name,并且赋值
objc_setAssociatedObject(instance, "name", @"Victor John", OBJC_ASSOCIATION_COPY_NONATOMIC);
//给description属性设置
objc_setAssociatedObject(instance, "description", @"Person类的description", OBJC_ASSOCIATION_COPY_NONATOMIC);
//4.然后获取值
id name = objc_getAssociatedObject(instance, "name");
id description = objc_getAssociatedObject(instance, "description");
//5.输出打印
NSLog(@"Person=%p, name=%@ ,description=%@", class, name, description);
}
return 0;
}
以下是截图
~~~~~