2

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

@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。但是在我进入之后,当调试器处于 return NO 语句时,它的name属性填充了正确的值。

我想我可以在基于该条件创建对象时设置 isValid 标志,但我认为如果它可以读取 self.name 是否为零,我就不必这样做。有人对如何解决此问题有任何想法吗?谢谢。

编辑:我的超类是 NSObject。

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

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

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

这个逻辑确实有效。

4

0 回答 0