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