我有一个自定义类,包含一个性别字符串和一个用于服务器交互的布尔值。
。H
@interface Member : NSObject
...
@property (nonatomic, strong) NSString *gender;
@property (nonatomic) BOOL isMale;
...
.m
- (void)setIsMale:(BOOL)isMale
{
_isMale = isMale;
if (isMale) {
self.gender = @"Male";
}
else {
self.gender = @"Female";
}
}
我也想做相反的事情,这意味着当性别更改为女性时,我希望我的 isMale 属性设置为 NO。但是如果也为性别定义一个 setter,这两个 setter 将处于无限循环中。有没有办法实现两个不会相互循环的私有设置器?
这将是导致无限循环的代码
- (void)setGender:(NSString *)gender
{
_gender = gender;
if ([gender isEqualToString:@"Male"]) {
self.isMale = YES;
}
else if ([gender isEqualToString:@"Female"]) {
self.isMale = NO;
}
else {
// discard...
}
}