2011-11-19 70 views
1

我是否需要明確地將零元素置零,即將BOOL s設置爲NO,將int s設置爲0基元需要初始化爲零嗎?

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

我知道指針必須明確設置爲nil,否則它們可能會被填充垃圾。 (或僅用於Objective-C++?)

回答

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; 
4

初始化原語總是很好的編程習慣,但通常只有當您指向該變量時纔有必要,除非有機會將其設置爲除垃圾內存。

我相信編譯器仍然會在「未初始化的變量」上拋出警告,但如果沒有,XCode中肯定會有一個編譯器複選框。

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