通过类名实例化一个对象

通过类名实例化一个对象有三种方式:

OneObject *object = [[OneObject alloc] init];
OneObject *object = [OneObject new];
Class object = NSClassFromString(OneObject);

前面的2种方法对象实例化是我们常见的方法,第3种方法是runtime 的方法。其区别在于:

  • 是否需要导入类的头文件(涉及到弱化连接问题);
  • 通过前2种都需要 import 头文件,而第3种方法就不需要导入头文件,只需要知道类的名字就可以了。使用这种方法的好处是弱化连接,因此并不会把没有的Framework也link到程序中。

这种方式的一般使用如下:

NSString *myClassStr = @"myClass"; 
Class myClazz = NSClassFromString(myClassStr); 
if (myClazz) { 
    id myClassInit = [[myClazz alloc] init];
}

你可能感兴趣的:(通过类名实例化一个对象)