-1

次のコードを使用して多くの画像を配列にロードしていますが、それをより効率的に行う方法を知りたいです。たとえば、100枚の画像を効率的に配列にロードするにはどうすればよいでしょうか。

hopAnimation=[[NSArray alloc] initWithObjects:
              [UIImage imageNamed:@"frame-1.png"],
              [UIImage imageNamed:@"frame-2.png"],
              [UIImage imageNamed:@"frame-3.png"],
              [UIImage imageNamed:@"frame-4.png"],
              [UIImage imageNamed:@"frame-5.png"],
              [UIImage imageNamed:@"frame-6.png"],
              [UIImage imageNamed:@"frame-7.png"],
              [UIImage imageNamed:@"frame-8.png"],
              [UIImage imageNamed:@"frame-9.png"],
              [UIImage imageNamed:@"frame-10.png"],
.
.
.
               [UIImage imageNamed:@"frame-100.png"],
              nil
              ];

これを効率的に行うためにforループを使用する方法はありますか?

4

4 に答える 4

2

命名規則がそのように一貫していると仮定すると、可変配列を使用してアイテムをループに追加できます。

NSMutableArray *hopAnimation = [[NSMutableArray alloc] initWithCapacity:100];

for (int i = 1, i <= 100, i++) {
   [hopAnimation addObject:[UIImage imageNamed:[NSString stringWithFormat:@"frame-%i.png", i]]];
}
于 2012-05-14T00:36:14.487 に答える
1

確かに、for ループを使用できます。すべての画像名をplistに入れたいと思うかもしれません。次に、名前の配列を作成できます。

NSArray * imageNames = [NSArray arrayWithContentsOfFile:@"/path/to/names.plist"];

それをループして、画像の配列を作成します。

NSMutableArray * images = [NSMutableArray array];
for( NSString * imageName in imageNames ){
    [images addObject:[UIImage imageNamed:imageName]];
}

または、画像ファイルの名前が実際にそのように一貫している場合は、整数をループして、それをファイル名の文字列に入れることができます。

NSMutableArray * images = [NSMutableArray array]; 
for( int i = 1; i <= numImageFiles; i++ ){
    [images addObject:[UIImage imageNamed:[NSString stringWithFormat:@"frame-%d.png", i]]];
}
于 2012-05-14T00:37:20.920 に答える
0

他の人は、配列にループを設定することを提案しました。あなたが述べた目標は効率であり、ループがあれば、現在配列をロードしている方法よりも効率が低下します。コードをクリーンアップしたい場合は、必ずループを使用してください。ただし、効率を求めている場合は、現在使用している方法よりも効率的な配列を作成する方法はありません。

于 2012-05-14T00:58:16.733 に答える
0

Clang 3.1 (おそらく Xcode 4.4 で導入される予定) 以降を使用している場合は、新しい配列リテラル構文を使用できます。

@[
    [UIImage imageNamed:@"frame-1.png"],
    [UIImage imageNamed:@"frame-2.png"],
    [UIImage imageNamed:@"frame-3.png"],
    /* ... */
]

-initWithObjects:それが with のようなループで実装されているかどうか、またはその他のパフォーマンスに関する考慮事項についての情報は見つかりませんでした。

于 2012-05-14T04:08:00.637 に答える