我正在使用主控細節應用程序。主屏幕是一塊儀表盤和選擇項目,移動到詳細屏幕,我在後臺Alamofire請求會給出內存警告
低於觸發Alamofire
請求片斷
class APIManager: NSObject {
class var sharedManager: APIManager {
return _sharedManager
}
private var requests = [Request]()
// Cancel any ongoing download
func cancelRequests() {
if requests.count > 0 {
for request in requests {
request.cancel()
}
}
}
func getData(completion: (dataSet: [Data]?, error: NSError?) -> Void) {
let request = Alamofire.request(.GET, "http://request")
.response { (request, response, data, error) in
dispatch_async(dispatch_get_main_queue(), {
if(error == nil) {
if let response = data, data = (try? NSJSONSerialization.JSONObjectWithData(response, options: [])) as? [NSDictionary] {
var dataSet = [Data]()
for (_, dictionary) in data.enumerate() {
let lat = dictionary["Latitude"]
let lng = dictionary["Longitude"]
let id = dictionary["ID"] as! Int
let data = Data(lat: lat!, long: lng!, id: shuttleID)
dataSet.append(data)
}
completion(dataSet: dataSet, error: nil)
}
} else { completion(dataSet: nil, error: error) }
})
}
requests.append(request)
}
}
我有一個單獨的API管理器類,並從詳細視圖控制器我稱之爲getData()
函數。一切正常。
但是,當我重複推動和彈出時,我看到內存迅速增加,並且在10-15次嘗試後,我收到內存警告。但在AppDelegate
我管理它顯示一條警報消息並添加一個延遲計時器8秒。但是,20-25嘗試應用程序崩潰後,由於內存警告。
在viewWillDisappear()
,我也取消了任何正在進行的請求。但我無法停止記憶警告問題。我評論了我稱之爲請求的部分,我沒有發現問題,即使內存消耗也較少。
我歡迎創意。