我有一个自定义类,包含一个性别字符串和一个用于服务器交互的布尔值。
。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...
    }
}