我正在开发iOS6并使用Xcode 4.5.2。
我有一个UIViewController
,让我们说它的名字是aViewController
。在这个UIViewController
中,我使用此代码将 BOOL指针声明为属性。实际上,它不是我实现的一段代码,所以我真的不知道为什么使用 BOOL指针。
现在,在为此 BOOL指针分配值时,我得到了这个着名的警告Incompatible integer to pointer conversion assigning to 'BOOL *' (aka 'signed char *') from 'signed char'
,这完全可以理解,因为在我的情况下, BOOL 指向布尔变量。
要解决此问题,我已尝试this one。所以我的代码是这样的:
aViewController.aBoolPointer = YES;
然后,我试过了,
aViewController.(*aBoolPointer) = YES;
由于Objective-c是C的超集,我记得在C .*
符号中等于->
。以上表示法给出了错误。错误描述:预期标识符。
如果我改变代码是这样的:
aViewController->aBoolPointer = YES ;
我收到此错误实例变量aBoolPointer受保护。
如果我使用此代码
,这是一个奇怪的问题aViewController.aBoolPointer = NO ;
然后,我没有得到任何警告。
所以我的问题是:
1 - 为 BOOL指针分配 NO 值时,为什么没有警告?
2 - 如何正确地将 YES 值分配给 BOOL指针?
3 - 考虑到我解释的步骤, YES 或 NO 之间有什么区别?
谢谢大家。
答案 0 :(得分:3)
1为什么在为BOOL指针指定NO值时没有警告?
因为NO
与0
或NULL
相同,所以就像在指针中指定NULL
一样,如下所示:
BOOL *p = NULL;
2如何为BOOL指针正确分配YES值?
如果属性定义为:
@property(assign, nonatomic) BOOL *boolp;
然后:
BOOL b = YES;
obj.boolp = &b;
3通过考虑我解释的步骤,YES或NO之间有什么区别?
我不明白这个问题。
答案 1 :(得分:0)
BOOL指针就像其他人一样指针
if (aViewController.aBoolPointer != NULL)
*(aViewController.aBoolPointer) = YES;
但是,我不知道为什么属性会将BOOL指针用作类型。您使用的是第三方框架吗?您最好查看他们的文档或询问作者。