Ios 为什么我不能为目标C中的布尔赋值为真?

Ios 为什么我不能为目标C中的布尔赋值为真?,ios,objective-c,boolean,Ios,Objective C,Boolean,在实现文件中创建了一个BOOL*myBool变量,如下所示: @interface myClass () { BOOL *myBool; } - (void)viewDidLoad { [super viewDidLoad]; myBool = false; // no error } - (IBAction)myBtnClickd:(UIButton *)sender { if (!myBool) {

在实现文件中创建了一个
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*。指向布尔的指针。将false赋值给BOOL*会产生一些隐藏在C标准中的奇怪原因

无论如何,这是Objective-C。为什么在Objective-C中使用true和false?不是肯定就是否定

不管怎样,那是什么乱七八糟的代码?只要写myBool=!米布尔

不管怎么说,在Objective-C类中使用不以下划线开头的实例变量做什么,为什么不使用属性?该代码应该是

self.myBool = ! self.myBool;


当然,BOOL*应该是BOOL。BOOL不是引用类型,而是值类型

从BOOL中删除*myBool;myBool=false;//工作正常,因为它将转换为0,0为NULL,可分配给指针。myBool=true,它转换为1,并且不是指针的有效值。@谢谢,但如果它不是引用类型,它是什么类型?@ios\u Dev它是一个值type@Unheilig我无法提高投票率,可能是因为我的声誉不好,我会尽快做到。谢谢你的链接,谢谢你,告诉你赋值true-false和YES-NO之间有什么区别?你在Objective-C类中有没有以下划线开头的实例变量将false赋值给BOOL*有效,因为[是和否是目标C编码约定。以下划线开头的实例变量是目标C编码约定。这样,读者会立即看到您使用的是一个实例变量,而不是局部变量、参数、全局变量、外部全局变量、枚举等,而是一个实例变量。使用属性将我被告知要使用属性,当我需要从另一个类访问它时,我应该一直使用属性吗?
_myBool = ! _myBool;