Я пишу приложение, которое довольно графически тяжело, и поэтому я пытаюсь реализовать механизм кэширования в моем контроллере представления, который создает представление один раз и сохраняет его для будущего использования , похожее на следующее:Управление объектной памятью: элементы кеширования
- (UIView *)logoView
{
if(_logoView == nil)
{
_logoView = [[UIImageView alloc] initWithImage: [UIImage imageNamed: @"logo_header.png"]];
_logoView.contentMode = UIViewContentModeCenter;
}
return _logoView;
}
Это все работает изумительно, однако, я получаю немного запутался по определенному вопросу; когда я моделировать предупреждение памяти я называю метод, который очищает кэш, например, так:
- (void)purgeCachedContent
{
if(_logoView != nil)[_logoView release];
}
Однако, это, кажется, вызывает мои вопросы применения, так как он может вызываться несколько раз (dealloc, didReceiveMemoryWarning и viewDidUnload) ,
Как определить, существует ли экземпляр для отправки сообщения о выпуске? Даже когда я пытаюсь загрузить NSLog, я получаю ошибку EXC_BAD_ACCESS, поэтому мне трудно понять, как это сделать. Я даже удалил оператор if, надеясь полагаться на возможность отправлять сообщения с ноль-объектами, но это вызывает ту же ошибку ...
Я уверен, что это что-то простое из-за моего объективного знания ... Я просто не знаю, что!