给IOS对象添加动态属性
2013-12-01 15:34
239 查看
IOS属性和方法的扩展:
category与associative作为objective-c的扩展机制的两个特性,category即类型,可以通过它来扩展方法;associative,可以通过它来扩展属性;要用它必须使用<objc/runtime.h>的头文件,然后就可以自由使用objc_getAssociatedObject以及objc_setAssociatedObject,我们来看下这两个方法实现:
@interface NSObject (CocoaExtras)
@property (nonatomic,retain)NSMutableDictionary* mutableUserInfo;
@end
char* const ASSOCIATION_MUTABLE_USER_INFO =
"ASSOCIATION_MUTABLE_USER_INFO";
@implementation NSObject (CocoaExtras)
//添加属性扩展set方法
-(void) setMutableUserInfo:(NSMutableDictionary *) m {
objc_setAssociatedObject(self,ASSOCIATION_MUTABLE_USER_INFO,m,OBJC_ASSOCIATION_RETAIN_NONATOMIC);
}
//添加属性扩展get方法
-(NSMutableDictionary*) mutableUserInfo {
NSMutableDictionary* userInfo =objc_getAssociatedObject(self,ASSOCIATION_MUTABLE_USER_INFO);
return userInfo;
}
category与associative作为objective-c的扩展机制的两个特性,category即类型,可以通过它来扩展方法;associative,可以通过它来扩展属性;要用它必须使用<objc/runtime.h>的头文件,然后就可以自由使用objc_getAssociatedObject以及objc_setAssociatedObject,我们来看下这两个方法实现:
@interface NSObject (CocoaExtras)
@property (nonatomic,retain)NSMutableDictionary* mutableUserInfo;
@end
char* const ASSOCIATION_MUTABLE_USER_INFO =
"ASSOCIATION_MUTABLE_USER_INFO";
@implementation NSObject (CocoaExtras)
//添加属性扩展set方法
-(void) setMutableUserInfo:(NSMutableDictionary *) m {
objc_setAssociatedObject(self,ASSOCIATION_MUTABLE_USER_INFO,m,OBJC_ASSOCIATION_RETAIN_NONATOMIC);
}
//添加属性扩展get方法
-(NSMutableDictionary*) mutableUserInfo {
NSMutableDictionary* userInfo =objc_getAssociatedObject(self,ASSOCIATION_MUTABLE_USER_INFO);
return userInfo;
}
相关文章推荐
- iOS开发------runtime关联对象(动态添加属性)
- 给IOS对象添加动态属性
- 在python的类中动态添加属性与生成对象
- python实现在类中动态添加属性和生成对象
- js遍历对象的属性并且动态添加属性
- JavaScript中定义对象的方式,动态添加属性和动态删除属性!
- jquery 给对象动态添加属性
- 为某一个对象动态添加属性
- javascript动态添加、修改、删除对象的属性和方法
- iOS动态添加和获取属性
- 利用cglib库给对象动态添加属性
- ios开发runtime学习四:动态添加属性
- json动态创建对象并添加属性,遍历属性
- IOS动态为类添加属性
- JavaScript可以动态添加、删除对象属性与方法
- IOS运行时传递对象或者添加属性
- js中动态的为对象添加和删除属性
- JavaScript对象动态添加属性
- 转: javascript动态添加、修改、删除对象的属性和方法
- iOS runtime ~ 动态添加属性