0

このコード行を使用して配列を調べています

for (int i = 0; i < [[GameP objectForKey:@"groundMap"] length]; i += 5) {

AS3のバックグラウンドから来て、「長さ」は配列/オブジェクトの長さを与えると思いましたが、同じことをしているように見える「カウント」を発見したばかりで、「長さ」ですが、うまくいくようです。

誰か教えてもらえますか。

  1. 「長さ」とは何ですか、そしてそれはその行でどのように/なぜ機能していますか?
  2. カウントと長さの違いは何ですか?
  3. どちらを使用するのが良いですか?

アドバイスありがとうございます。

4

2 に答える 2

3

GamePが辞書であると仮定すると、 への呼び出しobjectForKey:はタイプ のオブジェクトを返しますidlengthしたがって、 でメソッドを呼び出そうとしていidます。これは正常にコンパイルされますが、実行時に「groundMap」のオブジェクトが配列であると仮定すると、おそらく間違っています。配列にはcountメソッドしかなく、メソッドはありませんlength

また、ループの繰り返しごとに辞書からオブジェクトにアクセスしています。次のようにコードを書く必要があります。

NSArray *groundMap = [GameP objectForKey:@"groundMap"];
NSUInteger count = groundMap.count;
for (int i = 0; i < count ; i += 5) {
}

これは読みやすく、コンパイラはより適切なエラー チェックを行うことができます。また、はるかに効率的です。

于 2012-10-29T17:26:57.057 に答える
0

まず、辞書でオブジェクトのクラスを知る必要がありますGamePNSArrayここで使用する必要がある場合countは、別の方法を使用する方法はありません。

クラスlengthでメソッドを見つけることができます。NSSString

于 2012-10-29T17:26:42.957 に答える