【发布时间】:2009-10-24 21:14:51
【问题描述】:
也许我的记忆已经完全古怪了,但我想我记得声明指针而不初始化它们会使它们指向 nil。但最近似乎并非如此。一直都是这样吗?还是和编译器设置有关?
【问题讨论】:
-
我认为只有静态“字段”被初始化为
nil。局部变量将指向垃圾。我认为情况一直如此。你还记得任何细节吗?
标签: objective-c pointers null
也许我的记忆已经完全古怪了,但我想我记得声明指针而不初始化它们会使它们指向 nil。但最近似乎并非如此。一直都是这样吗?还是和编译器设置有关?
【问题讨论】:
nil。局部变量将指向垃圾。我认为情况一直如此。你还记得任何细节吗?
标签: objective-c pointers null
对象的实例变量在alloc中初始化为nil(整个对象被置零)。
编辑: 此外,全局和静态存储变量初始化为零(C99 Standard 的 6.7.8 10,感谢 Derek 指出)。
本地堆栈变量不会自动初始化。这在已知的历史中没有改变。
【讨论】:
nil,但在调用 alloc 时变为非 nil:NSString* foo; assert(foo==nil); foo = [NSString alloc]; assert(foo!=nil); foo = [foo init]; assert(foo!=nil);
nil 当它们是成员的 object 是 alloc'd
来自Transitioning to ARC Release Notes:
堆栈变量初始化为
nil使用 ARC,强、弱和自动释放堆栈变量现在隐式初始化为
-(无效)我的方法{ NSString *名称; NSLog(@"name: %@", name); }nil。例如:将记录
null以获取 name 的值,而不是可能崩溃。
【讨论】: