est*_*art 2 class objective-c objective-c-runtime
所以我上课了MyClass.它的名字是其中的一部分char * myclasses[].我想使用objc运行时api来分配它.
1)这是最好的方法吗?我的目标是不分配10或15个ViewControllers,直到它们实际需要使用,并且还没有巨大的switch语句来创建它们.
Class aClass = NSClassFromString ( [NSString stringWithUTF8String:myclasses[1]] );
id myClass = class_createInstance(aClass, 0);
Run Code Online (Sandbox Code Playgroud)
我正在努力理解注册课程..
2)因为我不是在运行时创建一个新类(只是分配),所以我不应该注册它,对吗?
3)班级注册通常如何运作?(随意指点我某处的文件).
1)class_createInstance与+ alloc没有什么不同.我建议只是打电话
[aClass alloc]
Run Code Online (Sandbox Code Playgroud)
(然后-init*像往常一样,当然).无需使用ObjC运行时函数进行正常分配.
2)对,无需注册
3)动态类的创建是一个棘手的业务,但基本上你分配一个类(不是类的实例)有objc_allocateClassPair,再加入实例变量和方法,它class_addMethod和class_addIvar,然后调用objc_registerClassPair它.之后你可以照常使用它.