Где-то я читал, что - что касается предупреждений о нехватке памяти и отказе от невидимого представления со всеми его подпредставлениями (я думаю, что это целое перо), вы должны сделать это:
-(void)dealloc {
[anView release], anView = nil;
[someImageView release], someImageView = nil;
[super dealloc];
}
вместо
-(void)dealloc {
[anView release];
[someImageView release];
[super dealloc];
}
В чем причина заземления этих указателей на nil (= "no object") после вызова release? Позвольте мне догадаться: какой-то другой метод мог по какой-то причине -retain сохранить представление (кто-нибудь, например, когда это могло произойти?), Затем произошла вещь didReceiveMemoryWarning, и вы выпустили целое представление nib +, которое в данный момент не видно (т.е. в мультивью-приложении). Как только пользователь захочет снова увидеть этот вид, вы снова быстро загрузите перо, а затем: он загружает все виды, соединяет розетки и BANG! Ваши другие сохраненные представления теперь зависают без какого-либо указателя где-то одиноко в кирпиче памяти, вызывая большую и глубокую утечку памяти, пока ваше приложение не падает.
Right / Wrong?