2011-09-16 38 views
0

可能重複:
(Objective-)C ints always initialized to 0?爲什麼我的代碼與我一起初始化NSInteger?

@interface MyInterface 
{ 
    NSInteger _count; 
} 

@end 

然後在我執行我只是用一個接口是

if (_count==0) 
{ 
    //do somthing 
} 
_count++; 

即使我第一次執行該操作時,該值實際上是0,即使我從未初始化爲0。

是因爲NSInteger的默認值是0嗎?

+2

當一個Objective-C類被實例化時,所有的實例變量都被設置爲它們的初始值。它由分配機制完成。 – Macmade

回答

4

假設你的意思是寫==,而不是=,得到的答覆是,所有的實例變量的Objective-C類的(高德)獲得當對象被創建時,初始化爲0或nil。請參閱問題(Objective-)C ints always initialized to 0?

如果你確實有一個=寫道if (_count = 0),那不是做你所期望的 - 它分配0至_count,然後測試,如果是非零(表達if (x)測試,如果x不爲零)。由於您剛分配0,因此它不是非零,因此測試總是失敗。

1

你的if語句改爲

if (_count == 0) 

記得雙等號是比較,單等號是賦值

1

您使用

if (_count=0) 

這將設置值0變量_count,和如果此操作成功,則執行{}之間的代碼

,以測試變量使用比較運算符的價值==

if(_count == 0) 
相關問題