Ben*_* Lu 1 setter xcode overriding objective-c ios
我有一个整数变量,例如timeSignature,在.h文件中声明它,并合成了一对setter/getter方法:
在.h:
@interface Metronome : NSObject {
int timeSignature;
}
@property (nonatomic) int timeSignature;
Run Code Online (Sandbox Code Playgroud)
在.m:
@synthesize timeSignature;
Run Code Online (Sandbox Code Playgroud)
我希望覆盖setter方法:当用户为其设置新值时,它会执行其他操作以及更改为新值:
- (void) setTimeSignature:(int)timeSignature {
self.timeSignature = timeSignature; //hides instance variable warning at this line
[self doesSomethingElse];
}
Run Code Online (Sandbox Code Playgroud)
并且问题是,本地变量和实例变量具有相同的名称.
我怎么能避免这个?
重命名参数变量名称:
- (void) setTimeSignature:(int)newTimeSignature {
timeSignature = newTimeSignature; //hides instance variable warning at this line
[self doesSomethingElse];
}
Run Code Online (Sandbox Code Playgroud)
另外,不要在setter中使用该属性,这将创建一个无限循环!self.timeSignature =将调用setTimeSignature!
这是人们使用下划线名称(_timeSignature)作为属性的支持ivar的原因之一.
| 归档时间: |
|
| 查看次数: |
5023 次 |
| 最近记录: |