5

我正在制作一个应用程序,它将从网络服务中获取图片资源和文本。我选择了很棒的 AFNetworking 的 UIImageView+AFNetworking 类别来处理图像下载的东西。

但是,我面临着内存问题。我使用了Instruments的分配工具,发现每次加载更多图像时,内存分配总会增加,大小为 1-2 MB。我追查到源代码,原来是在AFNetworking的代码里。

确切的代码行是:

- (void)connectionDidFinishLoading:(NSURLConnection *)__unused connection {
    self.responseData = [self.outputStream propertyForKey:NSStreamDataWrittenToMemoryStreamKey];

    [self.outputStream close];

    [self finish];

    self.connection = nil;
}

这将占用 99.6% 的内存分配。

我在项目中使用 ARC,在 UITableView 中显示 UIImageViews 并像以下代码一样配置单元格:

[self.imageView setImageWithURLRequest:request
                          placeholderImage:nil
                                   success:successBlock
                                   failure:failBlock];

任何人都可以提供一些关于内存问题的想法吗?真的很头疼,因为一旦分配了内存,即使我清除了整个图像视图,它们也永远不会被清除。过了一会儿,我的应用程序将从Instruments的Real Memory Usage窗口占用超过 100MB 。

任何帮助将不胜感激!!提前致谢!!

4

1 回答 1

1

可以清除图像的缓存。github上有一个关于它的讨论:

AFNetworking 图像缓存

这可能会也可能不会解决您的问题。我想定期清除缓存应该可以降低内存使用量。

于 2013-01-24T01:58:47.280 回答