我在 ViewController
中有一个 IBOutlet
UIImageView*
。释放 Controller 后(我不再需要它了),UIImageView
* 的 retainCount 为 2(代码没有任何保留),甚至在两次释放后 [我认为,这完全错误] (在 Controller 中 dealloc
) UIImageView
内存仍然分配。为什么会发生,我的问题是 - 在使用 IBOutlets
dealloc UIViewController
后如何完全释放内存?
@interface GRULogInController (){
IBOutlet UIImageView* bgImage;
}
@end
@implementation GRULogInController
....
- (void)viewDidUnload
{
NSLog(@"%d", bgImage.retainCount); // Shows 2 !!!
[bgImage release];
[bgImage release]; // Object releases but memory not freed (It shown in Instruments)
[super viewDidUnload];
}
- (void) dealloc
{
[self viewDidUnload];
[super dealloc];
}
最佳答案
首先看一下这个链接。 whentouseretaincount.com
它只是没有提供任何有用的信息。
其次,iOS 在需要内存时清除 viewController,而不是在您释放 viewController 后立即清除。
你不应该释放 imageView 两次,让 viewController 处理它。
另一件事是 viewDidUnload 已被弃用,您应该改为在 dealloc 中执行代码。
关于ios - 在 IBOutlet (UIImageView) 之后释放内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13044642/