stu*_*ped 20 null objective-c instance-variables static-variables
我正在读一本关于Objective-C的书,作者说如果局部变量没有赋值,它们将被设置为nil,但静态变量将被设置为零.所以,我设置int a并没有给它赋值.然后NSLog(@"%i", a)显示它并a显示为零.我对此感到有些困惑,我想知道是否有人可以为我澄清一下?
wby*_*ung 48
启用ARC后,无论您在何处创建它们,Objective-C对象指针变量都将设置为nil.
如果没有ARC,对于内置C类型,您的变量将不会被初始化.
分配对象时,Objective-C对象的实例变量始终设置为0(或nil).
静态设置为0.
不过,我已经习惯了总是给变量赋一个默认值.这是一个很好的习惯.
小智 13
没有2.就像在"普通"C中一样,局部变量没有分配默认值.(虽然你第一次使用堆栈的部分时可能会很幸运:不要依赖于它!)
无论如何,nil 是 0 1 - 也就是说,nil == 0总是如此 - 所以NSLog("@%i", nil)说"嘿,将参数记录为整数",这是...... 0.
快乐的编码.
1请参阅gdb中的nil未定义为0x0?其中更详细地介绍了技术定义,包括Objective-C++案例.请注意,类型也会根据体系结构而变化,因此特定系统"@%i"可能会出错.
2请参阅wbyoung对ARC特定规则的回答.