当前位置:  开发笔记 > 编程语言 > 正文

在Cocoa中声明对象时,我应该将它们设置为nil吗?

如何解决《在Cocoa中声明对象时,我应该将它们设置为nil吗?》经验,为你挑选了1个好方法。

假设我想创建一个实例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.";

这两者有什么区别,哪种方法更受欢迎?



1> notnoop..:

我个人的偏好是立即初始化任何变量.但是,在您提供的示例中,这两种方法是等效的.

C语言(例如C,C++,Obj-C)未立即初始化可能包含随机的垃圾值的变量.在初始化之前使用该变量会导致意外行为(从希望崩溃到获得意外行为).

示例 考虑以下示例:

int abs;
if (argument > 0) abs = argument;
else if (argument < 0) abs = -1 * argument;
NSLog(@"%i", abs);

abs如果argument为0 ,代码会保留未初始化的变量.因此,您将记录随机值,然后导致破坏程序其余部分的值; 并且很难发现问题出在哪里!

如果你使用未初始化的参考,你很可能会得到一个EXC_BAD_ACCESS.

推荐阅读
mylvfamily
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有