2011-09-16 10 views
0

可能性の重複:
(Objective-)C ints always initialized to 0?私のコードがNSIntegerを初期化する理由は何ですか?

私はその後、私の実装では、私はちょうど

if (_count==0) 
{ 
    //do somthing 
} 
_count++; 
とされて使用していますインターフェース

@interface MyInterface 
{ 
    NSInteger _count; 
} 

@end 

を持っています210

これは最初の実行時に実行されます。ゼロに初期化されたことはありませんが、値は実際には0です。

NSIntegerのデフォルト値は0なので、それはありますか?

+2

Objective-Cクラスがインスタンス化されると、すべてのインスタンス変数が初期値に設定されます。これは割り当てメカニズムによって行われます。 – Macmade

答えて

4

が、答えはObjective-Cのクラスのインスタンス変数のすべて(アイバーズ)が取得することで、変数を使用する比較演算子の値をテストしますオブジェクトが作成されると、0またはnilに初期化されます。質問(Objective-)C ints always initialized to 0?を参照してください。

あなたが実際にその後、それはあなたが期待何をしていない、単一=if (_count = 0)を書いた場合 - (xが非ゼロの場合の式if (x)テスト)、非ゼロだかどうかは_countに0を割り当てていますし、その後のテスト。 0を割り当てただけなので、ゼロではないので、テストは常に失敗します。

1
が比較され、二重等号を覚え

if (_count == 0) 

にあなたのif文を変更

、単一等号は、あなたが、これは変数_countに値0を設定します

if (_count=0) 

を使用している割り当て

1

で、この処理が成功すると{}のコードが実行されます

あなたは=の代わりに==を書くためのものと仮定すると、==

if(_count == 0) 
関連する問題