【问题标题】:Is there any memory leak in following snippet of code?以下代码片段中是否有任何内存泄漏?
【发布时间】:2012-10-15 11:43:56
【问题描述】:
'countdown' 是一个 uimageview 属性,定义如下:
@property (retain, nonatomic) IBOutlet UIImageView *countDown;
countDown.image= [[[UIImage alloc]
initWithContentsOfFile:[[NSBundle mainBundle]
pathForResource:@"backgroundimage" ofType:@"png"]]autorelease];
【问题讨论】:
标签:
iphone
memory-management
uiimage
memory-leaks
【解决方案1】:
可能会有。
如果您从 Leaks Instrument 中找到它,它会向您显示泄漏对象的创建位置,而不是泄漏对象的位置。
因此,虽然看起来不错,但您将自动释放的对象传递给属性,并且属性通常可以很好地管理它们的内存,但您正在对导致它不被释放的图像执行其他操作。
您可能忘记在 dealloc 中释放它,或者在没有意识到您对它有强引用的情况下使用它。
您需要做的是尝试跟踪该图像的生命周期,看看您将它保留在没有发布的位置。
【解决方案2】:
取决于 countDown 对象是什么,以及是否在 countDown 类的 dealloc() 方法中释放属性 image的对象。
编辑:看到你的问题编辑后..
如果您正确释放 countDown,则不会发生内存泄漏。