[英]How can I reduce memory usage when rendering a PDF page into a CGBitmapContext?
[英]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
的創建/初始化jsonResult2
到applicationDidFinishLaunching
但是它要求我將其轉換為可選(?),這在以后對其進行了下轉換,並且出現了更多錯誤。
在不占用所有內存並每5秒創建所有新變量的情況下,最有效的方法是什么?
非常感謝,我的應用程序快完成了,但是最后我在調試時很掙扎。 任何幫助都將是驚人的。
您可以使用iVar,然后它將覆蓋並解決您的問題(如果確實是您的問題^^)
另外,我不確定整個代碼會如何處理,但是當使用nil
字典后,是否不能將字典設置為nil
?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.