NSClassFromString
2013-03-12 14:51
176 查看
转自:http://www.cocoachina.com/b/?p=219
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中没有某个类的头文件定义,而你确信这个类是可以用的,那么也可以用这种方法。
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中没有某个类的头文件定义,而你确信这个类是可以用的,那么也可以用这种方法。
相关文章推荐
- iOS NSClassFromString,NSSelectorFromString,isKingOfClass
- 使用NSClassFromString 获取不确定类
- [swift] NSClassFromString 无法获得该类
- Save a lot of code by using NSClassFromString in Objective C
- 通过文件名利用NSClassFromString, 取到Class类别,通过setValue:forKey:传递值
- iOS随机页面NSClassFromString
- Objective-C语法之动态类型(isKindOfClass, isMemberOfClass,id)等NSClassFromString
- NSClassFromString的使用
- NSClassFromString isKindOfClass
- NSClassFromString 创建视图控制器
- NSClassFromString,NSSelectorFromString,isKingOfClass
- NSClassFromString
- iOS NSClassFromString,NSSelectorFromString,isKingOfClass
- 第3月第21天 nsclassfromstring返回null SVN报错:clean the working copy and then retry the operation
- NSClassFromString的使用
- Swift NSClassFromString撞的墙
- NSClassFromString,NSSelectorFromString
- NSClassFromString 的使用方法
- NSClassFromString,NSSelectorFromString
- iOS NSClassFromString, NSSelectorFromString, isKingOfClass