我即将结束我的第一个iPhone应用程序,我想我应该通过泄漏性能工具来运行它。在修复了一个明显的问题之后,我剩下的唯一一个就是一个带有一个笔尖的通过loadNibNamed加载的表头视图(我在这里遵循了Recipes演示)。
- (void)viewDidLoad {
[super viewDidLoad];
if (self.tableHeaderView == nil) {
[[NSBundle mainBundle] loadNibNamed:@"TableHeaderView" owner:self options:nil];
self.tableView.tableHeaderView = self.tableHeaderView;
}
}然后在dealloc中:
- (void)dealloc {
[tableHeaderView release];
[super dealloc];
}仪器告诉我,我泄漏了256个字节,其中2个泄漏来自loadNibNamed的线路。tableHeaderView是Nib中唯一的顶级对象(我已经在调试器中对此进行了验证)。是不是有什么东西我忘了发布?我是不是误解了Instruments告诉我的话?是不是错了?这是操作系统稍后会清理的东西吗?
发布于 2009-10-30 03:47:02
Instruments是只在模拟器上告诉您这一点,还是在实际设备上报告相同的事情?如果你没有在设备上获得它,那么它就是模拟器--这是已知发生的(它不是完全匹配的)。
另外,在dealloc中,它不是[self.tableHeaderView release]吗?你必须与你的用法保持一致。
为了避免混淆,在你的.h中,你应该这样声明:
NS/UI/??xxxxxx *_MyObjectName; //notice the underscore则如下所示的属性:
@property .... NS/UI/??xxxxxx *MyObjectName; //no underscore然后像这样合成getter/setter:
@synthesize MyObjectName=_MyObjectName;最后,使用[self.MyObjectName ...];在整个程序中引用该对象
发布于 2009-11-01 19:34:41
加载nib时,您负责释放nib文件中的所有顶级对象。除了TableHeaderView之外,文件里还有其他东西吗?
https://stackoverflow.com/questions/1646054
复制相似问题