NSClassFromString()vs classNamed:(NSString *)

时间:2011-06-29 16:39:24

标签: objective-c cocoa dynamic

根据我的阅读,似乎有两种方法可以从类名中获取对象。使用NSClassFromString()NSBundle的{​​{1}}?

之间有什么区别?

1 个答案:

答案 0 :(得分:6)

NSClassFromString()返回已在运行时为给定名称注册的类。 NSBundle的classNamed:返回包中具有给定名称的类,该类可能尚未加载(这意味着它将在必要时加载包)。

但是另一种方式:NSBundle可能不知道应用程序运行时中加载的所有类(尽管如果它是您的主要包,它可能知道您的大多数类)。相反,您的应用程序的运行时在加载之前不会知道包中的所有类。