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;