我正在开发 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指向一个布尔变量。
为了解决这个问题,我试过这个。所以我的代码是这样的:
aViewController.aBoolPointer = YES;
然后,我试过了,
aViewController.(*aBoolPointer) = YES;
由于 Objective-c 是 C 的超集,我记得在 C.*
表示法中等于->
. 上面的符号给出了一个错误。错误描述:预期标识符。
如果我将代码更改为这样:
aViewController->aBoolPointer = YES ;
我收到此错误Instance variable aBoolPointer is protected。
这是奇怪的问题,如果我使用此代码
aViewController.aBoolPointer = NO ;
然后,我没有收到任何警告。
所以我的问题是:
1 - 为什么当我为BOOL 指针分配NO值时没有收到警告?
2 - 如何正确地将YES值分配给BOOL 指针?
3 -通过考虑我解释的步骤, YES或NO有什么区别?
谢谢你们。