大家都知道,在OC中,如果是Category,是无法按照正常方法增加成员变量的。
有2种方法(实际是1种)
方法1:
static const void *PropArrayKey = &PropArrayKey;
- (NSMutableArray*)propArray {
if(!objc_getAssociatedObject(self, PropArrayKey)) {
objc_setAssociatedObject(self, PropArrayKey, [[NSMutableArray alloc] init], OBJC_ASSOCIATION_RETAIN_NONATOMIC);
}
return objc_getAssociatedObject(self, PropArrayKey);
}
static const void *PropArrayKey = &PropArrayKey;
- (NSMutableArray*)propArray {
if(!objc_getAssociatedObject(self, PropArrayKey)) {
objc_setAssociatedObject(self, PropArrayKey, [[NSMutableArray alloc] init], OBJC_ASSOCIATION_RETAIN_NONATOMIC);
}
return objc_getAssociatedObject(self, PropArrayKey);
}
static const void *PropArrayKey = &PropArrayKey; - (NSMutableArray*)propArray { if(!objc_getAssociatedObject(self, PropArrayKey)) { objc_setAssociatedObject(self, PropArrayKey, [[NSMutableArray alloc] init], OBJC_ASSOCIATION_RETAIN_NONATOMIC); } return objc_getAssociatedObject(self, PropArrayKey); }
方法2:
- (UIView *)myView {
return [self associatedValueForKey:@selector(myView)];
}
- (void)setMyView:(UIView *)view {
[self associateValue:view withKey:@selector(myView)];
}
- (UIView *)myView {
return [self associatedValueForKey:@selector(myView)];
}
- (void)setMyView:(UIView *)view {
[self associateValue:view withKey:@selector(myView)];
}
- (UIView *)myView { return [self associatedValueForKey:@selector(myView)]; } - (void)setMyView:(UIView *)view { [self associateValue:view withKey:@selector(myView)]; }