Objective-C中默认初始化原始实例变量吗?

时间:2012-05-18 12:59:15

标签: objective-c initialization instance-variables primitive

在以下代码中,使用_test并期望其NO为vaue是否安全?或者我是否需要始终在- (id)init中明确初始化它?

@implementation Test {
    BOOL _test;
}

2 个答案:

答案 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