Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone objective-c中布尔值的只读获取程序_Iphone - Fatal编程技术网

Iphone objective-c中布尔值的只读获取程序

Iphone objective-c中布尔值的只读获取程序,iphone,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;

所以我不确定我做错了什么。我的类基本上有两个属性:

@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。但是,在我进入之后,当调试器位于returnno语句时,它的
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;
    }
}

这一逻辑确实有效。

听起来真的不对。您是否覆盖了
-(NSString*)名称
?另外,这个类的超类是什么?如何打印描述?对于
名称
,您可能应该在
@属性
上使用
复制
关键字。目前,您只有一个指向字符串对象的指针,它可能会从您的下方发生变化。您不是为
name
使用惰性getter吗?您可能会忘记返回初始化的值。这是假设
是有效的
一次给你一个错误的结果,然后工作正常,对吗?听起来真的不对。您是否覆盖了
-(NSString*)名称
?另外,这个类的超类是什么?如何打印描述?对于
名称
,您可能应该在
@属性
上使用
复制
关键字。目前,您只有一个指向字符串对象的指针,它可能会从您的下方发生变化。您不是为
name
使用惰性getter吗?您可能会忘记返回初始化的值。这是假设
isValid
一次给你一个错误的结果,然后工作正常,对吗?