フォトアルバムのようなビューを作ろうとしています。ただし、画像ファイルはかなり大きいです (2048x1536、png)。複数の画像を読み込むにはかなり時間がかかります。ということで画像読み込み用のスレッドを作成。まずは画像ホルダー用のUIButtonを作成。
UIButton* thumbnail = [[UIButton alloc] initWithFrame:r];
[[self scroll] addSubview:thumbnail];
[thumbnail release];
画像読み込み用のスレッドを開始します
[NSThread detachNewThreadSelector:@selector(th_load_filelist) toTarget:self withObject:nil];
スレッドはこちら
-(void) th_load_filelist
{
NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init];
for (UIButton* bt in [self.scroll subviews])
{
UIImage* img = [[UIImage alloc] initWithContentsOfFile:(NSString*)bt.tag];
[[bt layer] performSelectorOnMainThread:@selector(setContents:) withObject:(id)[img CGImage] waitUntilDone:YES];
[img release];
}
[pool release];
}
それはうまくいきます。通常の状況で。ただし、画像が多い場合やメモリ警告が発生する場合があります。アプリはエラー メッセージなしでクラッシュします。修正するためのヒントを教えてください。大きな画像が原因でメモリに問題があると思われます..