通过类名实例化一个对象

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

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];
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容