Objective-C未初始化的指针与空指针

qua*_*ano 11 null pointers objective-c

也许我的记忆已经完全消失了,但我想我记得在不初始化它们的情况下声明指针使它们指向零.但最近情况似乎并非如此.它总是这样吗?或者它与编译器设置有关?

Nik*_*uhe 16

对象的实例变量被初始化为nilalloc(整个对象bzeroed).

编辑: 此外,全局和静态存储变量初始化为零(C99标准的 6.7.8 10 ,感谢Derek指出这一点).

本地堆栈变量不会自动初始化.这在已知的历史中没有改变.


Dav*_*d H 5

过渡到ARC发行说明:

堆栈变量初始化为 nil

使用ARC,现在可以隐式初始化强,弱和自动释放堆栈变量nil.例如:

- (void)myMethod {
    NSString *name;
    NSLog(@"name: %@", name);
}

将记录null名称的值而不是崩溃.