NSClassFromString是一个很有用的东西,尤其在进行iPhone toolchain的开发上。
正常来说,
id myObj = [[NSClassFromString(@"MySpecialClass") alloc] init];
和
id myObj = [[MySpecialClass alloc] init];
是一样的。但是,如果你的程序中并不存在MySpecialClass这个类,下面的写法会出错,而上面的写法只是返回一个空对象而已。
因此,在某些情况下,可以使用NSClassFromString来进行你不确定的类的初始化。
比如在iPhone中,NSTask可能就会出现这种情况,所以在你需要使用NSTask时,最好使用:
[[NSClassFromString(@"NSTask") .....]]
而不要直接使用[NSTask ...]这种写法。
NSClassFromString的好处是:
1 弱化连接,因此并不会把没有的Framework也link到程序中。
2 不需要使用import,因为类是动态加载的,只要存在就可以加载。因此如果你的toolchain中没有某个类的头文件定义,而你确信这个类是可以用的,那么也可以用这种方法。
以上是网站上查看的一些说法。
看的仔细的朋友会发现,在我们现实开发中会碰到很多的 实例化都是需要带有参数的。构造函数有时候有时候会存在多个,那么怎么进行实例化呢?
其实在object-c中 大神们都已经帮我们考虑全了,一般若含有参数构造函数的话我们就 实现其相关的构造函数即可:
如 NSClassString initWithObject: 等来进行实例化。
object-c 里面还支持 自定义的实例化。。。。强大的一B。 检测机制还是很不错的。。。有待提高
浙公网安备 33010602011771号