在下面的代码中,使用它是否安全_test
并期望它的价值为NO
? 还是我需要始终明确地初始化它- (id)init
?
@implementation Test {
BOOL _test;
}
在下面的代码中,使用它是否安全_test
并期望它的价值为NO
? 还是我需要始终明确地初始化它- (id)init
?
@implementation Test {
BOOL _test;
}
可以安全地假设所有实例变量都将初始化为 0。
但是,对于本地/方法范围的变量,情况并非如此,如果不手动初始化,这些变量将指向垃圾。
为了将来参考,正如Rob Napier 指出的那样,这可以在以下文档中+ (id)alloc
找到:
新实例的
isa
实例变量被初始化为描述类的数据结构;所有其他实例变量的内存设置为0
.
我习惯于显式初始化它,主要是因为可追溯性和可读性。但是,当您查看 的定义时BOOL
,您会发现它NO
只不过是#define
0 的 a。因此,我假设您可以放心地期望_test
是NO
。
关于布尔值及其处理的一个非常好的帖子是Objective-C:BOOL vs bool