さんざん悩まされました。 2000 x 1000 ピクセル級の画像を何枚も一度に読み込んで、サムネイルでループを回していたので明らかに
UIImageView のメモリリーク
imageNamed をやめてキャッシュを無くす方法もだめで、ちゃんとサイズ縮小しようとネットで検索したところ、「カメラアプリの作り方 (3) - 写真を縮小して表示する」の方法で解決しました。
NSString *imagePath = [[NSBundle mainBundle] pathForResource:@"test" ofType:@"png"];
UIImage *image = [[UIImage alloc] initWithContentsOfFile:imagePath];
CGSize size = {300, 300};
UIGraphicsBeginImageContext(size);
CGRect rect;
rect.origin = CGPointZero;
rect.size = size;
[image drawInRect:rect];
UIImage *newImage;
newImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
Context 具体的には UIGraphicsBeginImageContext() と UIGraphicsEndImageContext() を利用して新たに画像を生成する方法です。
これは思いつかない方法でした。