我在某处读到-关于内存不足警告并放弃所有子视图的不可见视图(我认为=整个笔尖),您应该这样做:
-(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!您的其他保留视图现在挂起,没有任何指针在内存砖的某个地方孤独,导致大量内存泄漏,直到您的应用程序崩溃。
正确错误?