在我的iPad应用程序在iOS 4.2.1 UIScrollViewDelegate类中,-scrollViewDidEndDecelerating:
方法调用另一个,做的方法,这一点:为什么` - [UILabel setText:]`泄漏?
EntryModel *entry = [entries objectAtIndex:index];
self.titleLabel.text = entry.title;
title
是一个非原子,保留EntryModel的NSString的财产。 titleLabel
是一个非原子的保留属性,IBOutlet将它连接到在笔尖中定义的UILabel。在bbum的blog post之后,我一直在使用Heapshot分析,并将上述代码标识为泄漏。几乎每一个我滚动到一个新的页面时,titleLabel
泄漏了一下:
如果我更改第二行:
self.titleLabel.text = @"Whatever";
泄漏停止:
我很困惑。在分配新值之前,-[UILabel text]
是否不释放旧值?我假设没有,我必须做错什么。为什么会泄漏?
泄漏并不认为这是泄漏,但很明显。我明白`titleLable.text`会创建一个NSString的副本,但是为什么当一个新值被分配给它(并被复制)时它不会释放它? – theory 2011-01-12 20:08:52
如果Leaks没有将其视为泄漏,您为什么认为这是泄漏?如果`titleLable.text`没有正确释放字符串,Leaks会将其称为泄漏。 – pwc 2011-01-12 20:54:46