【发布时间】:2016-03-31 08:20:53
【问题描述】:
我正在使用主从应用程序。主屏幕是一个仪表板,在选择一个项目时,移动到我在后端触发 Alamofire 请求的详细屏幕
下面是sn-p
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() 中,我还取消了任何正在进行的请求。但我无法停止内存警告问题。我评论了我调用请求的部分,我没有看到任何问题,甚至内存消耗也更少。
我欢迎提出想法。
【问题讨论】:
标签: ios swift memory-management memory-leaks alamofire