
通過類名實例化一個對象有三種方式:
OneObject *object = [[OneObject alloc] init];
OneObject *object = [OneObject new];
Class object = NSClassFromString(OneObject);
前面的2種方法對象實例化是我們常見的方法,第3種方法是runtime 的方法。其區(qū)別在于:
- 是否需要導(dǎo)入類的頭文件(涉及到弱化連接問題);
- 通過前2種都需要 import 頭文件,而第3種方法就不需要導(dǎo)入頭文件,只需要知道類的名字就可以了。使用這種方法的好處是弱化連接,因此并不會把沒有的Framework也link到程序中。
這種方式的一般使用如下:
NSString *myClassStr = @"myClass";
Class myClazz = NSClassFromString(myClassStr);
if (myClazz) {
id myClassInit = [[myClazz alloc] init];
}