NSClassFromString的理解
来源:互联网 发布:金十数据手机客户端 编辑:程序博客网 时间:2024/06/03 18:36
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
NSGetSizeAndAlignment
NSLog
NSLogv
NSSelectorFromString
NSStringFromClass
NSStringFromSelector
NSStringFromSelector
SEL
NSString
SEL anotherSel=NSSelectorFromString(方法名字的字符串);
在编译时设置变量为SEL变量最有效的方法就是@selector()指令。然而,在某些情况下,你可能需要在运行时转换一个字符串为一个selector。
第一行是直接在程序里面写上方法的名字,第2行是通过sel变量获取方法的名字。第三行是写上方法名字的字符串.
我们得到 SEL变量之后,可以通过下面的调用来给一个对象发送消息:
[对象 performSelector:SEL变量 withObject:参数1 withObject:参数2];这样的机制增加了程序的灵活性,可以通过给一个方法传递sel参数,让这个方法动态的执行某一个方法,我们也可以通过配置文件制定需要执行的方法,程序读取配置文件之后把方法的字符串翻译成sel变量后给相应的对象发送这个消息从效率的角度上说,执行的时候不是通过方法的ID来查找方法,由于整数的查找比匹配字符串快得多,所以这样可以在某种程序上提高执行效率.
- NSClassFromString的理解
- NSClassFromString的使用
- NSClassFromString 的使用方法
- NSClassFromString的用法
- NSClassFromString
- NSClassFromString
- NSClassFromString
- NSClassFromString
- NSClassFromString
- NSClassFromString
- NSClassFromString returns nil的问题
- NSClassFromString swift3.0的坑
- Swift NSClassFromString撞的墙
- ios NSClassFromString 类的动态加载
- Swift 使用 NSClassFromString 遇到的大坑
- NSClassFromString()与NSStringFromClass()的用法及应用场景
- 《swift踩过的坑》之“swift中使用NSClassFromString”
- swift3.0遇到的那些坑之NSClassFromString
- 横竖屏切换时,禁止activity重新创建,android:configChanges="keyboardHidden|orientation" 不起作用
- .net xml导入到数据中
- window.onresize 多次触发的解决方法
- c++第四次实验-1000以内偶数的总和
- Android 播放视频时横竖屏的调整
- NSClassFromString的理解
- 理解Android安全机制-tmp
- poj 1222 EXTENDED LIGHTS OUT 增广矩阵消元法
- 智能优化算法学习清单
- xcode archive ipa包的时候provisioning profile出错
- 【排序】堆排序
- c#删除字符串中指定字符
- 首发|创业3年半,做8款App全部扑街;转做公众号5个月,零成本吸粉12万还拿了百万天使轮
- C# 数组元素查找