7

在下面的代码中,使用它是否安全_test并期望它的价值为NO? 还是我需要始终明确地初始化它- (id)init

@implementation Test {
    BOOL _test;
}
4

2 回答 2

9

可以安全地假设所有实例变量都将初始化为 0。

但是,对于本地/方法范围的变量,情况并非如此,如果不手动初始化,这些变量将指向垃圾。

为了将来参考,正如Rob Napier 指出的那样,这可以在以下文档中+ (id)alloc找到:

新实例的isa实例变量被初始化为描述类的数据结构;所有其他实例变量的内存设置为0.

于 2012-05-18T13:02:55.830 回答
0

我习惯于显式初始化它,主要是因为可追溯性和可读性。但是,当您查看 的定义时BOOL,您会发现它NO只不过是#define0 的 a。因此,我假设您可以放心地期望_testNO

关于布尔值及其处理的一个非常好的帖子是Objective-C:BOOL vs bool

于 2012-05-18T13:07:22.110 回答