我从网上搜到一些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;
}




以下是截图

Objective-C动态创建类(ARC版)_ci


~~~~~