簡體   English   中英

如何停止每個函數調用來創建新詞典以減少內存使用?

[英]How can I stop creating a new dictionary every function call to reduce memory usage?

我的新OS X代碼增加了20mb / min的內存使用量。

我已經通過Xcode工具運行了它,沒有內存泄漏。

applicationDidFinishLaunching調用checkDNS()時,它將運行一個計時器

checkDNS()創建一個新的字典jsonResult2 ,執行一個API調用,然后在控制台中打印結果。

我相信問題在於,每隔5秒鍾,我就會創建一個新的字典,從API調用中獲取值並將它們寫入該字典。 我以為它會覆蓋舊的,因為它仍然被稱為jsonResult2但是似乎在理想的正梯度中使用了大量內存。

這是內存配置文件

這是我的checkDNS()函數。

 func checkDNS() {

    request3.URL = NSURL(string: urlDNS)
    request3.HTTPMethod = "GET"

    NSURLConnection.sendAsynchronousRequest(request3, queue: NSOperationQueue(), completionHandler:{ (response:NSURLResponse?, data, error2) -> Void in

        if data == nil
        {
            println("no data returned from API")
            return
        }

        let jsonResult2: NSDictionary! = NSJSONSerialization.JSONObjectWithData(data!, options:NSJSONReadingOptions.MutableContainers, error: self.error) as NSDictionary

        if let dns = jsonResult2["dns"] as? [String: AnyObject]{
            if let dnsCompany = dns["geo"] as? String {
                self.dnsCompanyOut = dnsCompany
            }
            if let dnsIP = dns["ip"] as? String {
                self.dnsIPOut = dnsIP
            }
        }

        println(self.dnsCompanyOut)
        println(self.dnsIPOut)

    })
}

我該怎么解決? 我試圖將jsonResult2的創建/初始化jsonResult2applicationDidFinishLaunching但是它要求我將其轉換為可選(?),這在以后對其進行了下轉換,並且出現了更多錯誤。

在不占用所有內存並每5秒創建所有新變量的情況下,最有效的方法是什么?

非常感謝,我的應用程序快完成了,但是最后我在調試時很掙扎。 任何幫助都將是驚人的。

您可以使用iVar,然后它將覆蓋並解決您的問題(如果確實是您的問題^^)

另外,我不確定整個代碼會如何處理,但是當使用nil字典后,是否不能將字典設置為nil

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM