2014-01-12 31 views
1

编辑:对不起,我的问题。事实证明,错误发生在被静态分析器标记的那一行之前。
在这一行中,我调用了一个Obj-C方法,该方法创建并返回ABRecordRef,虽然我在调用代码中将CF对象的创建与CFRelease平衡,但静态分析器显然不确定内存CF对象的管理是正确完成的,因此是“潜在的泄漏”。
我转换的方法为C函数,并且警告不见了。的iOS:ARC下创建ABNewPersonViewController给“潜在的泄漏”警告

原文问题:
在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]; 

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

回答

1

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

尝试在viewDidAppearviewWillAppear方法来呈现这个控制器,它应该可以解决警告。

+0

能否请你告诉我们,这支持任何文件? – Lefteris

+0

当然可以。 [Here](http://stackoverflow.com/questions/16949353/uiviewcontroller-present)你可以在相关文档的相同问题中找到@Stas的一个很好的答案。 –

+0

嗯,是的,只告诉我们什么,我们知道,你不应该出现在viewDidLoad中委托视图或的viewController,作为视图尚未初始化,但这并不意味着你的看法或会的viewController不添加到UIWindow视图层次结构。如果无法找到上下文来绘制新视图或viewController,则会从操作系统中获取错误,例如您在链接上显示的错误。 – Lefteris