获取oc runtinme class的方法主要有两种:
1.NSClassFromString:
例如:
Class dictionaryClass = NSClassFromString(@"NSMutableDictionary");
id object = [[dictionaryClass alloc] init];
[object setObject:@"Foo" forKey:@"Bar"];
官方document如是说:
Return Value The class object named by aClassName, or nil if no class by that name is currently loaded. If aClassName is nil, returns nil.
2.objc_getclass
例如:
Class LSApplicationWorkspace_class = objc_getClass("LSApplicationWorkspace");
if (LSApplicationWorkspace_class == nil) {
LOG("failed to get class: LSApplicationWorkspace");
return AppInstExitCodeRuntime;
}
官方document如是说:
The Class object for the named class, or nil if the class is not registered with the Objective-C runtime.
另外,如果想要把自己的类添加到oc runtime,需要使用objc_addClass,官方document如是说:
The Objective-C runtime library automatically registers all the classes defined in your source code. You can create class definitions at runtime and register them with the objc_addClass function.
不过document好像有点过时了,用objc_allocateClassPair 和 objc_registerClassPair替代objc_addClass即可。