我正在观看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会阻止这个应用程序还是会通过测试?
答案 0 :(得分:1)
除非导致未处理的内存警告和崩溃,否则您可能不会因泄漏而被拒绝。也就是说,您提到的具体问题可以使用autorelease
修复。
SettingsViewController *nextController = [[[SettingsViewController alloc] initWithNibName:@"SettingsViewController" bundle:nil] autorelease];
导航控制器应保留视图控制器的生命周期。
答案 1 :(得分:0)
将应用程序提交给Apple并通过了。