在实现文件中创建了BOOL *myBool
变量,如下所示:
@interface myClass ()
{
BOOL *myBool;
}
- (void)viewDidLoad {
[super viewDidLoad];
myBool = false; // no error
}
- (IBAction)myBtnClickd:(UIButton *)sender {
if (!myBool) {
myBool = true; //error: incompatible integer to pointer conversion assigning to BOOL from int.
}
else {
myBool = false;
}
}
为什么我不能为它赋true,为什么我没有分配任何
int
,正如我们在代码中看到的那样,我不想将其设为属性。 最佳答案
您不能将true分配给BOOL,因为您不是要分配给BOOL,而是要分配给BOOL *。指向BOOL的指针。为BOOL *分配false的原因是C标准中隐藏的一些奇怪原因。
无论如何,这是Objective-C。为什么在Objective-C中使用true和false?是或否。
无论如何,那胡扯的代码是什么?只需写myBool =! myBool。
无论如何,在Objective-C类中具有不以下划线开头的实例变量的过程是什么,为什么不使用属性?该代码应该是
self.myBool = ! self.myBool;
要么
_myBool = ! _myBool;
当然,BOOL *应该是BOOL。 BOOL不是引用类型,而是值类型。