在ObjectiveC中,指针是将类实例变量初始化为'nil'还是其他?

时间:2009-06-15 22:12:38

标签: objective-c

即,ObjectiveC的行为与C类似,因为如果你创建一个指针,例如:

NSString* c;

c指向nil,还是指向为其保留的内存区域中的随机值?

换句话说,指针是否已预先初始化,或者我是否需要自己执行此操作?正如我所说,我知道在C / C ++中并非如此,但我想知道这里是否有一些ObjC魔法。

4 个答案:

答案 0 :(得分:13)

Objective-C中的类实例变量保证初始化为空值(0,nil等等)

答案 1 :(得分:3)

类实例变量和静态/全局变量在适当时初始化为nil / NULL / 0 / false。

然而,局部变量未初始化。

答案 2 :(得分:1)

它们是零,你可以假设这一点,例如通过测试:

if (nil == myVariableIHaventInitialisedYet)
{ 
  myVariableIHaventInitialisedYet = [SomeThingIMightMake initWithLove];
}

答案 3 :(得分:0)

在这个上观察局部变量。它们没有被初始化为nil,所以如果你没有在你的声明中初始化,请确保它们在使用之前已经在某处初始化。正如彼得所说的那样,类,实例和静态对你来说都是零,所以不用担心。

通常没有问题,但特别是它会在传入指针引用的调用中产生影响(如NSError **)。