iOS开发- NSClassFromString,NSSelectorFromString,isKingOfClass
2016-03-28 18:10
399 查看
1. NSClassFromString
这个方法判断类是否存在,如果存在就动态加载的,不存为就返回一个空对象;
id myObj = [[NSClassFromString(@"MySpecialClass") alloc] init];
正常情况下等价于:
id myObj = [[MySpecialClass alloc] init];
但是,如果你的程序中并不存在MySpecialClass这个类,下面的写法会出错,而上面的写法只是返回一个空对象而已。
优点:
弱化连接,因此并不会把没有的Framework也link到程序中。
不需要使用import,因为类是动态加载的,只要存在就可以加载。因此如果你的toolchain中没有某个类的头文件定义,而你确信这个类是可以用的,那么也可以用这种方法。
2. NSSelectorFromString
这个方法是上个方法的补充,也是动态加载实例方法。
SEL sel = NSSelectorFromString(@"doSomethingMethod:")//注意这个冒号,说明方法带有参数
if([object respondsToSelector:sel]) {
[object performSelector:sel withObject:color]; //注意如果有两个参数,使用两个withObject:参数;
}
3. isKindOfClass
isKindOfClass 我们也可以使用isKindOfClass来检查一个对象是否是一个类的成员
4. isMemberOfClass
isMemberOfClass方法是来确定对象是否是某一个类的成员
这个方法判断类是否存在,如果存在就动态加载的,不存为就返回一个空对象;
id myObj = [[NSClassFromString(@"MySpecialClass") alloc] init];
正常情况下等价于:
id myObj = [[MySpecialClass alloc] init];
但是,如果你的程序中并不存在MySpecialClass这个类,下面的写法会出错,而上面的写法只是返回一个空对象而已。
优点:
弱化连接,因此并不会把没有的Framework也link到程序中。
不需要使用import,因为类是动态加载的,只要存在就可以加载。因此如果你的toolchain中没有某个类的头文件定义,而你确信这个类是可以用的,那么也可以用这种方法。
2. NSSelectorFromString
这个方法是上个方法的补充,也是动态加载实例方法。
SEL sel = NSSelectorFromString(@"doSomethingMethod:")//注意这个冒号,说明方法带有参数
if([object respondsToSelector:sel]) {
[object performSelector:sel withObject:color]; //注意如果有两个参数,使用两个withObject:参数;
}
3. isKindOfClass
isKindOfClass 我们也可以使用isKindOfClass来检查一个对象是否是一个类的成员
4. isMemberOfClass
isMemberOfClass方法是来确定对象是否是某一个类的成员
相关文章推荐
- ios swfit 自定义柱状图
- IOS-协议的理解和倒计时demo
- IOS持续集成-详细介绍-2016
- iOS 设置导航条的主题
- 【Bugly干货分享】iOS内存管理:从MRC到ARC实践
- iOS开发- 实现类似于陌陌点点和探探首页切换效果类似
- iOS 远程推送的详细配置
- 真机调试出现:The identity used to sign the executable is no longer valid
- IOS pch 文件如何使用
- 使用Theos做一个简单的Mobile Substrate Tweak
- iOS导入第三方库步骤-CocoaPods
- 【Bugly干货分享】iOS内存管理:从MRC到ARC实践
- iOS开发的经典博客和文章汇总
- iOS开发-iOS中URL字符串的URLencode与URLdecode
- iOS 几种传值方式(属性,代理,block,通知,本地存储,单例类)附Demo
- ios计算器
- iOS本地存储1--NSkeyedArchiever归档
- iOS开发中图片方向的获取与更改
- ios 符号化 crash的方法
- iOS粘滞球效果