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

时间:2009-10-24 21:14:52

标签: objective-c pointers null

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

2 个答案:

答案 0 :(得分:16)

对象的实例变量在nil中初始化为alloc(整个对象都是bzeroed)。

修改 此外,全局和静态存储变量初始化为零(C99 Standard的6.7.8 10,感谢Derek指出这一点。)

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

答案 1 :(得分:5)

来自Transitioning to ARC Release Notes

  

使用nil

初始化堆栈变量      

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

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

会记录null以获取name的值,而不是崩溃。