我是否需要明確地將零元素置零,即將BOOL
s設置爲NO
,將int
s設置爲0
?基元需要初始化爲零嗎?
是否需要明確指定NSString*
至nil
或@""
?
我知道指針必須明確設置爲nil
,否則它們可能會被填充垃圾。 (或僅用於Objective-C++?)
我是否需要明確地將零元素置零,即將BOOL
s設置爲NO
,將int
s設置爲0
?基元需要初始化爲零嗎?
是否需要明確指定NSString*
至nil
或@""
?
我知道指針必須明確設置爲nil
,否則它們可能會被填充垃圾。 (或僅用於Objective-C++?)
這取決於你在談論什麼樣的變量。全局變量,靜態變量和實例變量已保證初始化爲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;
初始化原語總是很好的編程習慣,但通常只有當您指向該變量時纔有必要,除非有機會將其設置爲除垃圾內存。
我相信編譯器仍然會在「未初始化的變量」上拋出警告,但如果沒有,XCode中肯定會有一個編譯器複選框。
compiler flag for this是-Wuninitialized
,b.t.w.