在我的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 blog post之后,我一直在使用快照分析并将上述代码识别为泄漏。几乎每次我滚动到新页面时,titleLabel
都会泄漏一点:
如果我将第二行更改为:
self.titleLabel.text = @"Whatever";
泄漏停止:
我很困惑。 -[UILabel text]
在分配新值之前是否未释放旧值?我假设没有,我一定做错了。为什么会泄漏?
答案 0 :(得分:1)
也许你实际上并没有泄露记忆。您 分配内存,因为UILabel上的text属性使用复制语义。因此,调用self.titleLabel.text
将在赋值的右侧创建NSString的副本。尝试使用Leaks仪器运行,看看是否有泄漏记忆。
答案 1 :(得分:0)
鉴于您拥有零分配的快照生成,它不是一致的内存增加。它可能是缓存[出错]或者它可能是与滚动相关的泄漏,这些事件会在事件中出现问题。
带有分配的快照迭代显示了什么?