【发布时间】:2010-10-22 19:09:34
【问题描述】:
我在某处读到 - 关于内存不足警告并放弃所有子视图的不可见视图(= 整个笔尖,我认为),您应该这样做:
-(void)dealloc {
[anView release], anView = nil;
[someImageView release], someImageView = nil;
[super dealloc];
}
而不是
-(void)dealloc {
[anView release];
[someImageView release];
[super dealloc];
}
在我调用 release 之后,将这些指针设为 nil(=“无对象”)的原因是什么?让我猜猜:由于某种原因,其他一些方法可能会保留视图(任何人都可以举例说明何时会发生这种情况?),然后发生 didReceiveMemoryWarning 事情,并且您释放了当前不可见的整个 nib+view(即在多视图应用程序中)。一旦用户想再次查看该视图,您将再次快速加载 nib,然后:它加载所有视图,连接插座,然后 BANG!您的其他保留视图现在挂起,没有任何指针在内存砖的某个地方孤独,导致严重的内存泄漏,直到您的应用程序崩溃。
对/错?
【问题讨论】:
标签: iphone cocoa-touch memory-management uikit