2012-05-09 10 views
1

私はいくつかのコードを読んでいますが、私は次のような記述に出くわしました。それは絶対に意味をなさないようです。行は以下のようにコード化されています。それはNSMutableArrayの最初のオブジェクトをとり、 "count"メッセージを送ります。これは正確に何ですか?NSMutableArray Count

for (int j = 0; j < [[inputData objectAtIndex:0] count]; j++) 
//inputData is just an NSMutableArray 

私にこれを説明してもらえますか?私は以前これを見たことがない。私はおそらくarray [x] .lengthがarray.lengthと異なる2次元配列のようなものかもしれないと思ったのですが、inputDataは10個の数字のような単一のNSMutableArrayです。

+0

ランタイムエラーが発生していますか?これは、あなたが 'input'の最初の要素に' count'メッセージを送り、戻り値を反復の上限として使用していることを正確に示しています。 –

+0

最初にコンパイルして実行したときにうまくいきましたが、(学校プロジェクトの)若干の変更を行いましたが、その行でエラーが表示され、その理由がわかりません。私はちょうどあなたがNSNumberを "数える"方法を見ていません。 – MrHappyAsthma

+0

いいえ、NSNumberは 'count'に応答しません。これが前に働いていたとき、私はこれがNSNumberの配列ではないと推測しています。 –

答えて

2

あなたの配列(この場合はinpuData)にキーと一致するメカニズムがある場合、このループはインデックスをインクリメントしますが、条件が同じであれば([inputData objectAtIndex:0]の数は決して変更されません)、無限ループ

0

あなたはinputDataNSNumber Sが含まれていることを正しいならば、何が起こるかによって初めてというNSNumber-countに応答しないので、あなたが例外を取得しています。

[inputData objectAtIndex:0]-countに応答する場合、コードが他のことを行う唯一の方法です。アレイだけでなく、-countに応答するオブジェクトであればどれでもかまいません。実際には、inputDatanilの場合も例外をスローしません。式は0を返します(nilobjectAtIndex:を送信するとnilを返し、countnilに返すと0を返します)。