NSClassFromString 使用方法

转载陈斌彬的技术博客
NSClassFromString 是一个很有用的东西,尤其在进行 iPhone toolchain 的开发上。
正常来说

id myObj = [[NSClassFromString(@"MySpecialClass") alloc] init];

id myObj = [[MySpecialClass alloc] init];

是一样的。但是,如果你的程序中并不存在 MySpecialClass 这个类,下面的写法会出错,而上面的写法只是返回一个空对象而已。
比如在 iPhone 中,NSTask 可能就会出现这种情况,所以在你需要使用 NSTask 时,最好使用:

[[NSClassFromString(@"NSTask") .....]]

而不要直接使用[NSTask ...]这种写法
NSClassFromString 的好处是:

  • 弱化连接,因此并不会把没有的 Framework 也 link 到程序中。
  • 不需要使用 import,因为类是动态加载的,只要存在就可以加载。因此如果你的 toolchain 中没有某个类的头文件定义,而你确信这个类是可以用的,那么也可以用这种方法
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 175,827评论 25 709
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,773评论 19 139
  • “意外?”钱战一愣,忙追问那光头:“什么样的意外?” “你没听说过呀?”光头看到钱战一幅大瞪眼睛的样子,不禁来了劲...
    李陌359阅读 3,085评论 1 1
  • 记得两年前,就听李善友说自己天天在讲颠覆式创新,其实发现自己没有颠覆自己的已有认知体系,他深刻反省了下,决定打破自...
    景景相依阅读 3,034评论 0 0
  • AsyncTask的源码是很简单的,看着并不复杂。只是对Handler和ThreadPoolExecutor进行了...
    喵了个呜s阅读 2,870评论 0 1