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