【问题标题】:xcode Build and Analyze related questionsxcode Build and Analyze相关问题
【发布时间】:2010-08-11 02:53:02
【问题描述】:

我正在观看 WWDC 2010 的视频,现在开始深入研究 xcode 3.2 中构建和分析工具的功能。这是一个很棒的工具,可以突出显示编码错误(特别是对于像我这样的新手!),即使它们在运行时可能没有影响。

但有一件事我需要一些帮助才能理解。

当我使用此代码推送新的视图控制器时:

SettingsViewController *nextController = [[SettingsViewController alloc] initWithNibName:@"SettingsViewController" bundle:nil];

My_AppAppDelegate *delegate = [[UIApplication sharedApplication] delegate];

[delegate.myNavController pushViewController:nextController animated:YES];

分析器告诉我可能存在内存泄漏。我可以在某种程度上理解这一点,因为我分配了 NextController 但从未释放它。但是如果我尝试释放它,我的应用程序就会崩溃。

在模拟器和物理设备上使用 Instruments 进行分析时,我没有发现任何泄漏。

Apple 会停止这个应用程序还是会通过他们的测试?

【问题讨论】:

    标签: xcode memory-leaks build


    【解决方案1】:

    除非它们导致未处理的内存警告和崩溃,否则您可能不会因泄漏而被拒绝。也就是说,您提到的具体问题可以使用autorelease 解决。

    SettingsViewController *nextController = [[[SettingsViewController alloc] initWithNibName:@"SettingsViewController" bundle:nil] autorelease];
    

    导航控制器应在其生命周期内保留视图控制器。

    【讨论】:

    • 感谢您的建议。我对其进行了测试,它在构建和分析以及我第一次推送控制器时运行良好。我第二次这样做时,应用程序崩溃了。 autorelease 和 iOS 怎么样?据我了解,iOS 中没有垃圾收集,但在某些地方它们仍然指的是自动释放...
    • 我强烈建议您阅读 Apple 的内存管理编程指南。我没有方便的链接,但它会比这里的任何评论回答更多的问题。
    【解决方案2】:

    将 App 提交给 Apple,它通过了。

    【讨论】:

      猜你喜欢
      • 2011-06-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-03
      相关资源
      最近更新 更多