我正在使用主控细节应用程序。主屏幕是一块仪表盘和选择项目,移动到详细屏幕,我在后台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()
,我也取消了任何正在进行的请求。但我无法停止记忆警告问题。我评论了我称之为请求的部分,我没有发现问题,即使内存消耗也较少。
我欢迎创意。