即,ObjectiveC的行为与C类似,因为如果你创建一个指针,例如:
NSString* c;
c指向nil,还是指向为其保留的内存区域中的随机值?
换句话说,指针是否已预先初始化,或者我是否需要自己执行此操作?正如我所说,我知道在C / C ++中并非如此,但我想知道这里是否有一些ObjC魔法。
答案 0 :(得分:13)
Objective-C中的类实例变量保证初始化为空值(0,nil等等)
答案 1 :(得分:3)
类实例变量和静态/全局变量在适当时初始化为nil / NULL / 0 / false。
然而,局部变量未初始化。
答案 2 :(得分:1)
它们是零,你可以假设这一点,例如通过测试:
if (nil == myVariableIHaventInitialisedYet)
{
myVariableIHaventInitialisedYet = [SomeThingIMightMake initWithLove];
}
答案 3 :(得分:0)
在这个上观察局部变量。它们没有被初始化为nil,所以如果你没有在你的声明中初始化,请确保它们在使用之前已经在某处初始化。正如彼得所说的那样,类,实例和静态对你来说都是零,所以不用担心。
通常没有问题,但特别是它会在传入指针引用的调用中产生影响(如NSError **)。