假设我想创建一个实例NSString
,根据另一个变量的值初始化为某个值。通常情况下,我会这样做
NSString *string;
if(foo == 1)
string = @"Foo is one.";
else
string = @"Foo is not one.";
然而,在我见过的一些示例代码中,我看到人们这样做
NSString *string = nil;
if(foo == 1)
string = @"Foo is one.";
else
string = @"Foo is not one.";
这两种方法有什么区别,首选哪种方法?
我个人的偏好是立即初始化任何变量。但是,在您提供的示例中,这两种方法是等效的。
In C
语言(即C
, C++
, Obj-C
)未立即初始化的变量可能包含随机垃圾值。在初始化之前使用变量会导致意外行为(从希望崩溃到意外行为)。
Example考虑以下示例:
int abs;
if (argument > 0) abs = argument;
else if (argument < 0) abs = -1 * argument;
NSLog(@"%i", abs);
这里留下代码abs
变量未初始化如果argument
是 0。因此您会记录随机值,然后导致程序其余部分中的值损坏;而且很难发现问题出在哪里!
如果您使用未初始化的引用,您很可能会得到一个EXC_BAD_ACCESS
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)