编辑:对不起,我的问题。事实证明,错误发生在被静态分析器标记的那一行之前。
在这一行中,我调用了一个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)物体的潜在泄漏”。
我不明白为什么会有这个警告,以及我如何摆脱它。
有什么建议吗?
能否请你告诉我们,这支持任何文件? – Lefteris
当然可以。 [Here](http://stackoverflow.com/questions/16949353/uiviewcontroller-present)你可以在相关文档的相同问题中找到@Stas的一个很好的答案。 –
嗯,是的,只告诉我们什么,我们知道,你不应该出现在viewDidLoad中委托视图或的viewController,作为视图尚未初始化,但这并不意味着你的看法或会的viewController不添加到UIWindow视图层次结构。如果无法找到上下文来绘制新视图或viewController,则会从操作系统中获取错误,例如您在链接上显示的错误。 – Lefteris