2017-01-16 106 views
0

我在視圖控制器上什麼都不做,我看到了應用程序正在工作時變化的圖形。內存泄漏Xcode 8儀器

這真的是泄漏嗎?

enter image description here

它第一次顯示綠色的對勾,然後它顯示1個泄漏並沒有新的泄漏。

因此,這意味着沒有泄漏或仍然有1個泄漏,但不是新的泄漏?

我實際上有包含經理的強烈參考的應用程序委託。

class AppDelegate { 

var applicationManager = ApplicationManager() 

} 

,我在ApplicationManager

class ApplicationManager 
{ 
    lazy var apiService: APIService = { 

    let service = APIService() 

    return service 

    }() 

    lazy var facebookService: FacebookService = { 

    let service = FacebookService() 

    return service 

    }() 
} 

有幾個服務我有一個函數

func logInUser() 
    { 
    guard let appDelegate = UIApplication.shared.delegate as? AppDelegate else { 
     fatalError() 
    } 

    let apiService = appDelegate.applicationManager.apiService 

    guard let email = emailTextField.text, let password = passwordTextField.text else { 
     return 
    } 
    apiService.loginUserWith(email, password: password) {(result) in 
} 

可能這個代碼將導致問題?

使用新的工具我也看到

,我有一個泄漏的對象(這是在另一個以前的項目),但具有相同執行經理和服務。

enter image description here

+0

泄漏是泄漏;一旦物體泄漏,它會永遠泄漏。但它只是一個對象,所以也許你並不在乎。如果需要,可以使用Instruments來追蹤有問題的對象的內存管理。 – matt

+0

@matt,也許是錯誤的,是的,我明白了)但奇怪我只分配的服務導致泄漏,我可以分享來源? –

+0

有一個泄漏報告錯誤http://stackoverflow.com/questions/39944703/object-hierarchy-is-causing-a-memory-leak-in-swift因此,也許你的泄漏不是真實的。 – matt

回答

2

我要表明,有其實無泄漏。 Xcode的8.2版本說明說:

記憶調試器爲MacOS和iPhone模擬器修復包含類型枚舉的任字段,或者從某些目標C框架類繼承的類夫特類報告假內存泄漏。 (27932061)

您正在使用的Xcode 8.1,所以我們知道有「假內存泄漏的雨燕類的報告」,在這個版本中(儘管在什麼確切的情況,以及是否錯誤,即使在完全固定Xcode 8.2,仍然不清楚)。

此外,我下載了您的github示例項目並在Xcode 8.2.1中運行它,並且沒有在Instruments或內存圖中報告泄漏。這裏的儀器輸出:

enter image description here

+0

感謝您的幫助!)真的很感激它,因爲我認爲所有的應用程序都是用漏洞編寫的,這很瘋狂)感謝上帝和你 –