2009-03-27 13 views
5

をロードしないで、私はapplicationDidFinishLaunchingの最初の行として次のことをやっている:NSArrayのinitWithObjects:テストとして

NSArray *list=[[NSArray alloc] initWithObjects:@"Andy",@"Erik",@"Aaron",nil]; 

ラインを実行した後、私は配列にゼロのオブジェクトを持っています。私はこれをさらにコードパスでやっていますが、構文が正しいことを確認するために影響を排除したいと考えていました。私はNSMutableArrayで同じ結果を得ます。デバッガでは、配列名の上にmousingして、値があるかどうかを調べます。

int count = [list count]; 

配列を満たしていないと、なぜカウントが戻って与えていない理由の任意の提案:私のマウスは次の行のカウントの上に、私は「varaible最適化された阿波...概要」を参照してください

整数?

答えて

6

何が起こっているかは、 'count'変数を使用しておらず、コンパイラがこれを最適化していることです。

1)リリースモードではなくデバッグモードで実行してください。デバッグモードではデバッガを最適化することはできません。そのため、count変数がデバッガ上にマウスを置いて正しい結果を表示するようにしてください。 xcodeの左上にあるドロップダウンバーをクリックすると、アクティブな構成をリリースからデバッグするように変更できます。

2)コードで 'count'変数を使用します。リリースビルドでは、コンパイラがやりたいことがあれば、順不同で起こり得ることに注意してください。たとえば、カウント初期化文をどこかに持っていて、コード内でさらに 'count'を使用すると、 'count'が実際に使用される前に 'count'が設定されないことがあります。

+0

ありがとうございました。偶発的な配布モードで誤っていました。それがどうやってそのように飛び回るのか不思議。 – 4thSpace