我有我的 iOS 应用程序一次获取一个图像并将它们显示在屏幕上(非常像幻灯片)。我遇到了内存不足的情况。在运行 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 张图像,因为用户可以向后滑动以查看以前显示的图像。在我的清理方法中,我将图像视图和图像视图本身的图像归零,并将其从数组中删除。所以我不确定是什么还在坚持它并导致记忆继续增长。我在这里想念什么?