Objective-C注册类Runtime Reference

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)班级注册通常如何运作?(随意指点我某处的文件).

Cat*_*Man 6

1)class_createInstance与+ alloc没有什么不同.我建议只是打电话

[aClass alloc]
Run Code Online (Sandbox Code Playgroud)

(然后-init*像往常一样,当然).无需使用ObjC运行时函数进行正常分配.

2)对,无需注册

3)动态类的创建是一个棘手的业务,但基本上你分配一个类(不是类的实例)有objc_allocateClassPair,再加入实例变量和方法,它class_addMethodclass_addIvar,然后调用objc_registerClassPair它.之后你可以照常使用它.