【发布时间】:2009-07-08 16:33:03
【问题描述】:
我正在编写一个图形繁重的应用程序,因此我试图在我的视图控制器中实现一个缓存机制,该机制创建一次视图,并保留它以供将来使用,类似于以下内容:
- (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 错误,所以我很难找出最好的方法。我什至删除了希望依赖能够发送 nil 对象消息的 if 语句,但这会导致相同的错误...
我确信这是我的 Objective-c 知识中缺少的一些简单的东西......我只是不知道是什么!
【问题讨论】:
标签: iphone objective-c cocoa cocoa-touch