objective c实现配置文件+反射
2015-11-21 15:39
363 查看
1. 先写plist配置文件
plist写到resouce里面去
通过NSBundle把数据取plist读出来
2. 通过NSClassFromString创建类
NSClassFromString
NSSelectorFromString
正常来说,
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,因为类是动态加载的,只要存在就可以加载。
for (int c=0; c<[classNames count]; c++) {
NSString *className=[classNames objectAtIndex:c];
id class=[[NSClassFromString(className) alloc] init];
for (int i=0; i<[params count]; i++) {
[class performSelector:NSSelectorFromString([NSString stringWithFormat:@"setA%i",i])];
}
}
plist写到resouce里面去
通过NSBundle把数据取plist读出来
2. 通过NSClassFromString创建类
NSClassFromString
NSSelectorFromString
正常来说,
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,因为类是动态加载的,只要存在就可以加载。
for (int c=0; c<[classNames count]; c++) {
NSString *className=[classNames objectAtIndex:c];
id class=[[NSClassFromString(className) alloc] init];
for (int i=0; i<[params count]; i++) {
[class performSelector:NSSelectorFromString([NSString stringWithFormat:@"setA%i",i])];
}
}
相关文章推荐
- Can not deserialize instance of java.lang.String out of START_OBJECT token
- Objective-C 的属性与合成方法使用详解
- object-UI之基本控件
- object-UI之基本控件
- Objective-c单例模式的正确写法
- Objective-C加强-block代码块和protocol协议
- iOS开发系列—Objective-C之Foundation框架
- iOS开发系列—Objective-C之内存管理
- iOS开发系列--Objective-C之KVC、KVO
- iOS开发系列--Objective-C之协议、代码块、分类
- Objective-C中对IPhone设备震动的调用
- Object-c学习之自定义视图
- Object-c学习之自定义视图
- Python中QuerySet和Objects类
- iOS应用开发最佳实践:编写高质量的Objective-C代码
- Foundation框架之NSString和NSArray
- Objective-C加强-内存管理
- Block 技巧与底层解析
- 在Xcode 7上直接使用Address Sanitizer
- objective-c 算法积累