我寫的應用程序是非常重的圖形,因此我試圖在我的視圖控制器中實現一個緩存機制,創建一個視圖,並保留它以供將來使用,類似以下內容:objective-c內存管理:緩存視圖元素
- (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語句,但是這會導致相同的錯誤...
我確定這是從我的objective-c知識中缺少的簡單東西...我只是不知道什麼!