2011-01-08 16 views
1

私のアプリが起動すると、UIImageView で同時に60枚の画像が読み込まれ、バックグラウンドミュージックも読み込まれます。それがうまく動作しますが、IPADで、それがクラッシュしたシミュレータでローカルで60枚の画像を読み込むことは可能ですか?

..

-(void)viewDidLoad 
{ 
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; 

//img.animationImages = [[NSArray arrayWithObjects: 

MyImages = [NSArray arrayWithObjects: 
         //[UIImage imageNamed: @"BookOpeningB001.jpg"],...... B099,nil]; 


//[NSTimer scheduledTimerWithTimeInterval: 8.0 target:self selector:@selector(onTimer) userInfo:nil repeats:NO]; 

img.animationImages = MyImages; 
img.animationDuration = 8.0; // seconds 
img.animationRepeatCount = 1; // 0 = loops forever 
[img startAnimating]; 
[self.view addSubview:img]; 
[img release]; 

[pool release]; 

//[img performSelector:@selector(displayImage:) ]; 

//[self performSelector:@selector(displayImage:) withObject:nil afterDelay:10.0]; 
[self performSelector: @selector(displayImage) withObject: nil afterDelay: 8.0]; 
} 


-(void)displayImage { 

SelectOption *NextView = [[SelectOption alloc] initWithNibName:nil bundle:nil]; 

[self presentModalViewController:NextView animated:NO]; 
[NextView release]; 
} 

は私が間違って何をやっていますか? UIImageViewでローカルイメージをより高速に読み込むための他の方法はありませんか? !

+0

これは誤った重複、またはバグのようです:ChrisFは、以下に参照される元の質問を移行しました。 –

+0

60匹のホットドッグを食べたい。彼らが一杯のカクテルフランクを飲むなら、それは可能かもしれません。フットロング、まさか。画像の詳細を教えてください。 –

答えて

3

私は似たようなことをしていました。あなたがあなたのiPad上の他のアプリをすべて終了し、それを稼働させても、あなたはランダムにクラッシュします。

これは、非常に小さい(5kまたは6kのような)gif画像でプレビューしました。その後、私のユーザーが大きな画像を見なければならない領域に入ったとき、私は完全な画像をjpgとしてロードし、オブジェクトが終了するとすぐにオブジェクトをリリースしました。

私のアプリはもうシミュレータやデバイスに問題がなく、ユーザーはすべてを閉じる必要はありません。

1

デバイスがクラッシュしてもシミュレータではなくても9/10回は、アプリケーションがメモリ警告を受けて強制終了することがあります。

この理論は、2つの方法で簡単にテストできます。まず、appDelegates Memory Warningイベントメソッドでコンソールに何かを記録し、次にシミュレータでアプリケーションを実行するときにアクティビティモニタを開き、アプリケーションのメモリ使用量を名前で表示します。

ゴールデンルールは、あなたが逃げることのできる画像の解像度を低くして使用することです。

Rohitは、小さな画像をプリロードすることがこの問題を解決する1つの方法であると言っていますが、漏れはないが、この解決策は特定のアプリにのみ適しています。

一般的には、メディアをローディングする方法が一般的です。あなたはまともなメモリ効率的な設計を実装する場合は、iPadアプリで一度に3つ以上の完全な解像度(フルスクリーン)の画像を読み込まなければならない理由はありません。

例のスライドショーのようなことをしている場合は、フォーカスした画像+ 1画像をメモリに読み込んで、スコープ画像を破棄してください。 UIScrollViewを使用すると、スクロールの開始、発生、終了時に発生するイベントを簡単に処理できます。

CATitledLaye r'sを使用すると、可能な画像タスク(GCDおよびブロック)をマルチスレッド化することができます(UIKitコンテキストがスレッドセーフでもあります)。

りんごのドキュメントやクイック検索でアクセスできるこれらのすべての例がたくさんあります。

関連する問題