iOSアプリで一度に1つずつ画像を取得し、画面に表示しています(スライドショーのように)。私はメモリ不足の状況に遭遇しています。Allocationsを実行しているときにInstrumentsを見ると、メモリが増え続けていることがわかります。コールツリーには大量のメモリが使用されていることが示されていますが、どの行も私のコードではなく、これらの状況をデバッグしてその読み取り方法を知るのに十分な経験がありません。
これが私が画像をフェッチしているコードです:
- (void)fetchLargeImage:(void (^)(UIImage *))completion
{
// image doesn't exist yet, fetch it now
NSURL *resourceURL = [NSURL URLWithString:[NSString stringWithFormat:@"http://path_to_image/%@", @"image_name.jpg"];
NSURLRequest *request = [NSURLRequest requestWithURL:resourceURL];
AFImageRequestOperation *operation = [AFImageRequestOperation imageRequestOperationWithRequest:request imageProcessingBlock:^UIImage *(UIImage *image) {
return image;
} success:^(NSURLRequest *request, NSHTTPURLResponse *response, UIImage *image) {
completion(image);
} failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error) {
// image wasn't loaded
}];
[operation start];
}
画像が表示されているので、ユーザーが前に表示された画像を確認するために後方にスワイプできるため、最後の10枚の画像を保存します。クリーンアップ方法では、画像ビューの画像と画像ビュー自体を削除し、配列から削除します。ですから、何がまだそれを保持していて、メモリが増え続けているのかわかりません。ここで何が欠けていますか?