【问题标题】:How to detect if a variable has not been released in Objective-C?如何检测一个变量是否在 Objective-C 中没有被释放?
【发布时间】:2011-05-05 21:00:46
【问题描述】:

我已经从我的代码中删除了几个版本,以查看 xCode 中的泄漏工具是否可以通知我有关错误代码的信息:

...
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的这个阶段我需要一个内存管理工具

谢谢

【问题讨论】:

    标签: objective-c ios memory-leaks


    【解决方案1】:

    您的(detailNav)过度保留还不是泄漏,因为它仍然被 splitViewController.viewControllers 引用。这就是 Instruments 不会将其显示为泄漏的原因。

    Instruments 不会标记过度保留(它不能)。只有当您的对象是孤立的,即在所有其他非泄漏对象都释放了它们的引用之后,仪器才会将其标记为泄漏。

    【讨论】:

      【解决方案2】:

      你在 Xcode4 中尝试过Product->Analyze 吗?这应该告诉你泄漏。

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-07-30
          • 1970-01-01
          • 1970-01-01
          • 2011-03-05
          相关资源
          最近更新 更多