Objective c 拦截UIButton的已知属性的setter并设置其值
假设我正在为一个类创建一个属性,比如Objective c 拦截UIButton的已知属性的setter并设置其值,objective-c,iphone,properties,Objective C,Iphone,Properties,假设我正在为一个类创建一个属性,比如 @property (nonatomic, strong) NSString *name; 如果我要为此创建一个setter,我会使用 - (void)setName:(NSString *)name { _name = name; // ... bla bla... } 注意第一行吗?我正在为该属性的内部变量指定新名称 现在,假设我想以编程方式更改UIButton的背景色,如果该按钮处于选定状态 所以,我想我可以截取所选属性的setter,如下
@property (nonatomic, strong) NSString *name;
如果我要为此创建一个setter,我会使用
- (void)setName:(NSString *)name {
_name = name;
// ... bla bla...
}
注意第一行吗?我正在为该属性的内部变量指定新名称
现在,假设我想以编程方式更改UIButton的背景色,如果该按钮处于选定状态
所以,我想我可以截取所选属性的setter,如下所示:
- (void)setSelected:(BOOL)selected {
self.backgroundColor = selected ? [UIColor redColor] : [UIColor darkGrayColor];
}
但是没有明显的方法来设置该属性的内部值。它将不接受_selected=selected,如果我使用self.selected=selected,我将创建一个调用setter无限次的设置崩溃条件
如何操作?要设置继承属性,请调用super:
[super setSelected:selected];
或
B R I L I A T!
super.selected = selected;