所以我不确定我在这里做错了什么。我的班级基本上有两个属性:
@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;
}
}
这个逻辑确实有效。