image5image4image3image2image1.jpg
自分の質問に対する「回答」の文字列を生成することが、有用または解決策として解釈される方法を想像することはできませんstring3
(NUMIMAGES を 5 に設定して、コードを Xcode Foundation ツール プロジェクトに貼り付けました)。
Objective C は、一見単純なタスクを非常に困難にするために、フープを飛び越えているようです。
Objective-C GuideとString Programming Guideを読んでから、結論を出してください。理解していないことを批判することは、一般的に非生産的です (しかし、私たちは皆それを行ってきましたが、イライラしたときに簡単に行うことができます)。
image1.jpg、image2.jpg などの一連の文字列を作成するだけです。
単純な解決策:
#define NUMIMAGES 5
NSMutableArray *fileNames = [NSMutableArray array];
for(int i = 0; i<5; i++)
[fileNames addObject: [NSString stringWithFormat: @"image%d.jpg", i]];
NSLog(@"fileNames %@", fileNames);
出力:
fileNames (
"image0.jpg",
"image1.jpg",
"image2.jpg",
"image3.jpg",
"image4.jpg"
)
単純なソリューションには特に問題がないことに注意してください。壊れやすく、効率が悪く、必要以上にコードが多くなります。
考えられるより良い解決策の 1 つ
すべての画像をアプリケーション プロジェクトにリソースとして追加します。
NSBundle API を使用して、すべての画像への URL を一度に取得します。
すなわち:
NSArray *paths = [[NSBundle mainBundle] pathsForResourcesOfType: @"jpg" inDirectory: nil];
これにより、コードからイメージ名のハードコーディングが削除されるだけでなく、システムがディレクトリの列挙とパスの生成を最適化できるようになります。画像のサブセットのみをロードする場合 (ゲームを作成していて、モンスターに関連する一連の画像があるとします)、関連するすべての画像を 1 つのディレクトリに配置し、そのディレクトリをリソースに追加してから、それを渡します。上記のメソッドの 2 番目の引数としてディレクトリの名前。
これらすべて (およびその他の多くのこと) は、リソース プログラミング ガイドに記載されています。