我仍在寻找解决内存泄漏问题的方法。目前我在这行代码中漏洞了。
return [UIImage imageWithContentsOfFile:path];
有人有想法吗?
提前谢谢!- (UIImage *)imageAtIndex:(NSUInteger)index {
// use "imageWithContentsOfFile:" instead of "imageNamed:" here to avoid caching our images
NSString *imageName = [self imageNameAtIndex:index];
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *path = [[paths objectAtIndex:0] stringByAppendingPathComponent:imageName];
//NSString *path = [[NSBundle mainBundle] pathForResource:imageName ofType:@"jpg"];
return [UIImage imageWithContentsOfFile:path];
}
- (void)configurePage:(ImageScrollView *)page forIndex:(NSUInteger)index
{
page.index = index;
page.frame = [self frameForPageAtIndex:index];
// To use full images instead of tiled images, replace the "displayTiledImageNamed:" call
// above by the following line:
// [page displayImage:[self imageAtIndex:index]];
[page displayImage:[self imageAtIndex:index]];
}
答案 0 :(得分:3)
当泄漏将一行代码识别为泄漏时,没有声称所述代码行是实际泄漏。只有那段代码是泄露的分配来源。
因此,imageWithContentsOfFile:
返回的图像在其他地方被过度保留,找工作地点是你的工作。
这通常很容易;打开Allocations仪器的小配置面板上的“保留跟踪”[IIRC]复选框,运行您的应用程序,然后单击其中一个泄漏的UIImages以查看图像保留和释放的确切位置列表。其中一个保留不会平衡,这就是你的泄漏。
虽然略微正交,但我在一篇关于使用Heapshot Analyais查找泄漏的帖子中描述了如何执行此操作。