目标C中Bool的价值

时间:2010-07-12 10:03:41

标签: iphone objective-c

目标C中BOOL的值始终为NO(默认情况下)。但是最近我遇到了BOOL变量的值返回YES(默认情况下)的情况。任何人都可以向我解释一下吗?

2 个答案:

答案 0 :(得分:22)

BOOL没有价值,因为它是一种类型。

您可能意味着BOOL类型的变量。有不同类型的变量,它们具有不同的初始化语义:

  1. 实例变量:Objective-C的alloc承诺将所有实例变量设置为零,如果BOOL意味着NO;
  2. 全局变量:或者更确切地说,具有静态存储持续时间的变量初始化为零,如C标准中所定义。
  3. 本地变量未初始化。如果未指定值,则不指定其内容。这也是C标准,可能是你偶然发现的。

答案 1 :(得分:1)

如果在没有初始化的情况下声明变量,操作系统将随机分配内存,此时分配的内存可能包含一些垃圾值。垃圾可以代表No也可以是Yes值。

建议:始终使用正确的初始化声明变量,以避免代码中出现错误。