如何检测Objective-C中是否还没有发布变量?

时间:2011-05-05 05:59:35

标签: objective-c ios memory-leaks

我已从代码中删除了一些版本,以查看xCode中的Leaks乐器是否可以通知我有关错误代码的信息:

...
UINavigationController *masterNav = [[UINavigationController alloc] initWithRootViewController:master];
UINavigationController *detailNav = [[UINavigationController alloc] initWithRootViewController:detail];
[master release];

splitViewController.viewControllers = [NSArray arrayWithObjects:masterNav, detailNav, nil];
//[masterNav release]; [detailNav release]; commented out

但是我看不到任何通知。是因为为这些变量分配的内存太小了?在这个阶段我需要一个内存管理工具,我正在学习Objective-C

感谢

3 个答案:

答案 0 :(得分:1)

你的over-retain(of detailNav)还没有泄漏,因为它仍然被splitViewController.viewControllers引用。这就是为什么仪器不会将其显示为泄漏的原因。

仪器没有标记过度保留(它不能)。只有当您的对象成为孤儿时,即在所有其他未泄漏的对象释放其引用之后,Instruments才会将其标记为泄漏。

答案 1 :(得分:0)

您是否在Xcode4中尝试了Product->Analyze?这应该会告诉你泄漏。

答案 2 :(得分:0)

转到xcode并选择项目。然后点击构建并分析。它会给你一些内存泄漏