我是否需要明确归零原语,即将BOOL
设置为NO
,将int
设置为0
?
我是否需要明确指定NSString*
到nil
或@""
?
我知道必须将指针显式设置为nil
,否则它们可能会被垃圾填满。 (或者仅适用于Objective-C ++?)
答案 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。