在我的 iPad 应用程序的 iOS 4.2.1 上的 UIScrollViewDelegate 类中,该-scrollViewDidEndDecelerating:
方法调用了另一个方法,它是:
EntryModel *entry = [entries objectAtIndex:index];
self.titleLabel.text = entry.title;
title
是 EntryModel 的一个非原子的、保留的 NSString 属性。titleLabel
是一个非原子的保留属性,带有一个 IBOutlet 将它连接到一个 nib 中定义的 UILabel。在 bbum 的博文之后,我一直在使用 Heapshot 分析,并将上述代码识别为泄漏。几乎每次我滚动到新页面时,都会titleLabel
泄漏一点:
如果我将第二行更改为:
self.titleLabel.text = @"Whatever";
泄漏停止:
我很困惑。-[UILabel text]
在分配新值之前不释放旧值吗?我假设不是,我一定做错了什么。为什么会泄漏?