在实现文件中创建了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不是引用类型,而是值类型。

10-06 01:10