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;
}