原语是否需要初始化为零?

时间:2011-11-19 20:16:15

标签: objective-c initialization primitive

我是否需要明确归零原语,即将BOOL设置为NO,将int设置为0

我是否需要明确指定NSString*nil@""

我知道必须将指针显式设置为nil,否则它们可能会被垃圾填满。 (或者仅适用于Objective-C ++?)

2 个答案:

答案 0 :(得分:6)

这取决于你所谈论的变量类型。全局,静态变量和实例变量已经保证初始化为0。

局部变量是另一回事。默认情况下,它们从未在所有初始化,因此在初始化或设置它们之前不应读取它们的值。没有必要将它们具体地初始化为0。例如,以下代码非常冗余:

Controller *controller = nil;
int countOfThings = 0;
controller = [Controller sharedInstance];
countOfThings = controller.totalThings - controller.thingsUsed;

相反,您应该将变量初始化为您实际需要的值:

Controller *controller = [Controller sharedInstance];
int countOfThings = controller.totalThings - controller.thingsUsed;

答案 1 :(得分:4)

初始化基元总是很好的编程习惯,但一般情况下,只有在有可能除了垃圾内存之外没有设置任何变量时才需要它。

我相信编译器仍然会对“未初始化的变量”发出警告,但如果没有,那么XCode中肯定会有一个编译器复选框。

compiler flag for this-Wuninitialized,b.t.w。

相关问题