【发布时间】:2011-05-14 16:25:11
【问题描述】:
我知道在here 之前已经回答了一个类似的问题,但我只是想确保我能更好地理解它。这是我的场景...
我有一个帮助类方法返回分配的 UIImageView,如下所示。
+(UIImageView *)tableCellButton{
return [[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"image"]] autorelease];
}
然后,在我的 UIViewController 方法之一中,我正在使用它..
UIImageView *imageView = [Helper tableCellButton];
imageView.frame = cell.backgroundView.bounds;
imageView.tag = 250;
[cell.backgroundView addSubview:imageView];
我的问题是关于如何释放这些内存。我没有使用自动释放池(除了创建的应用程序),并且该变量不是 iVar/Property(因此在调用 dealloc 时它不会被释放)。在这种情况下,我是否负责在调用后释放内存?自动释放何时发挥作用?感谢您的帮助!
【问题讨论】:
-
在此处查看此问题,了解何时使用AutoreleasePool Releases。希望这会给你一些见解。您永远不必
release和对象auto-released.如果它是在按钮按下期间创建的,或者只要cell.backgroundView持续存在(addSubview保留),它可能只会持续存在于“事件”中。 /跨度> -
就发布了...所以,我的应用程序中唯一的自动释放池是位于 main.js 中的那个。既然是这种情况,这会导致泄漏,还是会在 ViewController 清理表格和单元格时向该对象发送释放?
-
感谢您的回复!我还找到了 iOS 的内存管理文档(不知道我之前是怎么错过的)。 developer.apple.com/library/ios/#documentation/Cocoa/Conceptual/…
标签: iphone memory-management autorelease