iOS:在ARC下创建ABNewPersonViewController会发出“潜在泄漏”警告

时间:2014-01-12 07:52:47

标签: ios memory-leaks automatic-ref-counting abaddressbook

编辑:对不起我的问题。事实证明,错误出现在静态分析器标记的错误之前 在这一行中,我调用了一个创建并返回ABRecordRef Obj-C方法,虽然我在调用代码中通过CFRelease平衡了CF对象的创建,静态分析仪显然不确定CF对象的内存管理是否正确完成,因此“潜在泄漏” 我将方法转换为 C函数,警告消失了。

原始问题:
在ARC下,我有一个UINavigationController的子类,以模态方式呈现 在viewDidLoad方法中,我设置了ABNewPersonViewController,并使用以下代码将其推送到导航堆栈来显示它:

ABNewPersonViewController *personViewController = [[ABNewPersonViewController alloc] initWithNibName:nil bundle:nil];
personViewController.newPersonViewDelegate = self;
personViewController.displayedPerson = self.contactToBeAdded;f
[self pushViewController:personViewController animated:NO];  

一切正常,但静态分析器在代码的第一行提供警告“内存(Core Foundation / Objective-C)对象潜在泄漏”。
我不明白为什么会有这个警告,以及如何摆脱它 有什么建议吗?

1 个答案:

答案 0 :(得分:1)

您尝试从UIViewController提供新的viewDidLoad,问题是此控制器可能未添加到UIWindow层次结构中。

尝试使用viewDidAppearviewWillAppear方法显示此控制器,它应该修复警告。