2014-01-12 30 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