在以下代码中,使用_test
并期望其NO
为vaue是否安全?或者我是否需要始终在- (id)init
中明确初始化它?
@implementation Test {
BOOL _test;
}
答案 0 :(得分:9)
可以安全地假设所有实例变量都将初始化为0。
然而,本地/方法范围的变量不是这种情况,如果不是手动初始化,则会指向垃圾。
以后参考,Rob Napier points out,可以在the documentation for + (id)alloc
:
新实例的
isa
实例变量初始化为描述该类的数据结构;所有其他实例变量的内存设置为0
。
答案 1 :(得分:0)
我习惯于明确地初始化它,主要是因为可追溯性和可读性。
但是当你看到BOOL
的定义时,你会发现NO
只不过是#define
而不是0.因此,我认为你可以安全地期待{{1}成为_test
。
关于布尔值的非常好的帖子及其处理是Objective-C : BOOL vs bool