在我的 iPhone 应用程序中,我有一个很长的表,我正在从 xml(在线 xml)加载该表。该表连续显示一张图像和一些文本数据。我还使用延迟加载来加载图像。 现在,在仪器中没有严重的泄漏,但当我向下滚动表格时,整体内存分配会增加(意味着加载新图像)。
我想知道这会导致应用程序崩溃吗?我的客户说该应用程序在 3GS 和 iPhone 4 上崩溃,我正在 iPod 4G 上测试该应用程序。我没有看到任何崩溃,但我可以看到仪器中的内存分配很高。
请帮忙!
更新-
是的,我正在使用可重复使用的电池。当图像加载时,我使用此代码将它们添加到单元格中 -
- (void)appImageDidLoad:(NSIndexPath *)indexPath
{
IconDownloader *iconDownloader = [imageDownloadsInProgress objectForKey:indexPath];
if (iconDownloader != nil)
{
UITableViewCell *cell = (UITableViewCell *)[tblView cellForRowAtIndexPath:iconDownloader.indexPathInTableView];
// Display the newly loaded image
UIImageView *mixtapeImage = (UIImageView *) [cell viewWithTag:TAG_IMAGE];
mixtapeImage.image = iconDownloader.appRecord.mixtape_image_obj;
}
}
你是对的,我没有释放图像,因为如果我向上滚动表格,我必须再次在单元格中添加图像,这就是为什么我将它们缓存在“imageDownloadsInProgress”字典中。
有更有效的方法吗?
最佳答案
问题很可能是正在缓存的图像,在这种情况下,最好的解决方案是当您收到内存不足警告时从缓存中删除一些图像。您可以将它们临时写入磁盘,这将在下次需要它们时提供比重新下载更快的加载时间。
关于iphone - 内存泄漏与高内存分配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4886410/