Emi*_*mil 0 iphone memory-leaks memory-management objective-c uiimage
Instruments'Leaks告诉我这个UIImage正在泄漏:
UIImage *image = [[UIImage alloc] initWithContentsOfFile:[imagesPath stringByAppendingPathComponent:[NSString stringWithFormat:@"/%@.png", [postsArrayID objectAtIndex:indexPath.row]]]];
// If image contains anything, set cellImage to image. If image is empty, try one more time or use noImage.png, set in IB
if (image != nil){
// If image != nil, set cellImage to that image
cell.cellImage.image = image;
}
image = nil;
[image release];
Run Code Online (Sandbox Code Playgroud)
(类单元格(自定义表格视图单元格)也在dealloc方法中释放cellImage).
我不知道为什么它会泄漏,但肯定是这样.图像以cellForRowAtIndexPath:-method 多次加载.前三个单元的图像不会泄漏(130px高,所有空间都可用).
泄漏没有给我任何其他信息UIImage allocated here in the code leaks.
你能帮我解决一下吗?谢谢 :)
如果图像是a,你在那里的代码是正确的@property.您可以通过执行self.property = nil来释放@property,因为setter的工作方式.setter释放旧对象并将ivar设置为值.为了解决这个问题,你需要先放[image release].这里发生的是你将图像设置为nil然后你实际上是在做什么[nil release].旧图像只是漂浮在某处.所以解决这个问题的方法如下:
[image release];
image = nil;
Run Code Online (Sandbox Code Playgroud)