And*_*ewO 6 iphone cocoa memory-leaks nib
我即将结束我的第一个iPhone应用程序,并想通过Leaks Performance Tool运行它.在修复了一个明显的一个之后,我剩下的唯一一个是Nib充当通过loadNibNamed加载的表头视图(我在这里遵循Recipes演示).
- (void)viewDidLoad {
[super viewDidLoad];
if (self.tableHeaderView == nil) {
[[NSBundle mainBundle] loadNibNamed:@"TableHeaderView" owner:self options:nil];
self.tableView.tableHeaderView = self.tableHeaderView;
}
}
Run Code Online (Sandbox Code Playgroud)
然后在dealloc中:
- (void)dealloc {
[tableHeaderView release];
[super dealloc];
}
Run Code Online (Sandbox Code Playgroud)
Instruments告诉我,我正在泄漏256个字节,其中2个泄漏源自loadNibNamed.tableHeaderView是Nib中唯一的顶级对象(我在调试器中验证过).有什么我忘记发布的东西吗?我误解了乐器告诉我的内容吗?这是错的吗?OS是否会在以后清理?
小智 2
Instruments 是仅在模拟器上告诉您这一点,还是在实际设备上报告相同的情况?如果您没有在设备上获取它,那么它就是模拟器 - 并且已知会发生这种情况(它不是完全匹配)。
另外,在 dealloc 中,不是吗[self.tableHeaderView release]?您必须与您的用法保持一致。
为了避免混淆,在 .h 中,您需要声明以下内容:
NS/UI/??xxxxxx *_MyObjectName; //notice the underscore
Run Code Online (Sandbox Code Playgroud)
然后属性是这样的:
@property .... NS/UI/??xxxxxx *MyObjectName; //no underscore
Run Code Online (Sandbox Code Playgroud)
然后像这样合成 getter/setter:
@synthesize MyObjectName=_MyObjectName;
Run Code Online (Sandbox Code Playgroud)
最后,在整个程序中引用该对象[self.MyObjectName ...];
| 归档时间: |
|
| 查看次数: |
4026 次 |
| 最近记录: |