在objective-c中只读取BOOL值的getter

时间:2012-05-22 22:47:54

标签: iphone

所以我不确定我在这里做错了什么。我的班级基本上有两个属性:

@property (nonatomic, retain) NSString *name;
@property (nonatomic, readonly) BOOL isValid;

逻辑应该是如果名称不是nil,则isValid = YES,否则为NO。所以我把它写成:

- (BOOL)isValid {
    if (self.name)   // breakpoint was set here.
       return YES;
    else 
       return NO;
} 

当我打印出描述时,我得到相反的效果。不知道为什么。我试图通过调试器为此。当它在此方法上停止并且我查看self中的值时,我会查看name属性,值为nil。但是在我进入后,当调试器处于返回NO语句时,它具有填充了正确值的name属性。

我想我可以在根据该条件创建对象时设置isValid标志,但我认为如果self.name为nil或者它是否可以读取则不会。任何人对如何解决此问题有任何想法?感谢。

编辑: 我的超类是NSObject。

在同一个类中,还有另外两个属性我基本上具有相同类型的逻辑。

@property (nonatomic, retain) NSString *AA;
@property (nonatomic, readonly) BOOL isCodingRegion;

- (BOOL)isCodingRegion {
    if (self.AA) {
        return YES;
    }
    else {
        return NO;
    }
}

这种逻辑确实有效。

0 个答案:

没有答案