イメージをカルーセルに読み込むアプリケーションをiPadで実行しています。合計で138の画像があります。その数を100に減らすと、アプリケーションは正常に読み込まれます。しかしながら、138において、アプリケーションはクラッシュするのではなく、一時停止する。メモリに問題がありますか?
ブレークポイントに示されているように、viewDidLoadステートメントと最初のfor
ステートメントに達しています。問題は2番目のfor
ステートメントにあります。
// loading images into the queue
loadImagesOperationQueue = [[NSOperationQueue alloc] init];
NSMutableArray *tmpArray = [[NSMutableArray alloc] initWithCapacity:14];
for (int i = 0; i < 137; i++) {
[tmpArray addObject:[NSString stringWithFormat:@"cover_%d.jpg", i]];
}
for (int i = 0; i < 137; i++) {
int index = arc4random() % [tmpArray count];
NSString *imageName = [tmpArray objectAtIndex:index];
[tmpArray removeObjectAtIndex:index];
[(AFOpenFlowView *)self.view setImage:[UIImage imageNamed:imageName] forIndex:i];
}
私はARCでのiOS 5を使用していますので、私は手動メモリ管理をやってする必要はありませんが、私は、メモリの問題があることが推測しています。
あまりにもがメモリに保持されている可能性はありますか?それは138〜@ 146 KBです。それは約20 MBですが、私だけではこの問題が発生する可能性はありません。
GDBは役に立たない出力をせずに終了します。実際には出力はまったくありません。実行中の機器では、一時停止が発生すると、実際のメモリ使用量は6.11 MB、CPU使用率77.4%、仮想メモリ使用量175 MBとなっています。
私が心配しているのは、メモリーの警告も実際のクラッシュもなく、スレッドが一時停止して自動的に再開または強制終了できないということです.xcodeからそのスレッドを強制終了する必要があります。
また、これら138個のイメージは、ディスク上の圧縮ファイルの〜146 KBサイズよりも、メモリ内の非圧縮ビットマップとして多くのメモリを占有している可能性があります。 –