В моем приложении iOS у меня есть UIVieController с текстовым полем, которое отправляет запрос каждый раз, когда значение редактируется. Дело в том, чтобы показать предложения пользователей, которые возвращаются с сервера как объект JSON. я изначально имел все запросы Alamofire работать свободно, но чтобы облегчить нагрузку (даже если эти запросы были очень легкими) Я добавилДоступ к ошибке в Alamofire вызывает EXC_BAD_ACCESS
didSet {
oldValue?.cancel()
}
в modalRequest
собственности моего контроллера, который сохраняет текущий запрос.
Однако теперь мой обработчик ответа бросает EXC_BAD_ACCESS (код = 1, адрес = 0x0) при попытке получить доступ к ошибке в закрытии. Код выглядит следующим образом:
@IBAction func textValueChanged(sender: AnyObject) {
currentTextField = (sender as UITextField)
if (currentTextField!.text != "") {
modalRequest = Alamofire.request(.GET, "http://example.org/autocomplete/" + modalType.rawValue, parameters: ["term":currentTextField!.text]).responseJSON {(request, response, json, error) in
if let error = error {
NSLog("Error: \(error)")
println(request)
println(response)
} else {
let oldCount = self.suggestions.count
self.suggestions.removeAll()
let suggestionJSON = JSON(json!)
for s in suggestionJSON.arrayValue {
self.suggestions.append(s["name"].stringValue)
}
self.tableView.reloadSections(NSIndexSet(index: 1), withRowAnimation: UITableViewRowAnimation.Automatic)
}
}
} else {
self.modalRequest?.cancel()
self.suggestions.removeAll()
self.tableView.reloadSections(NSIndexSet(index: 1), withRowAnimation: UITableViewRowAnimation.Automatic)
}
}
странной и тревожная часть является то, что, когда я печатаю быстро, тем самым отменяя незавершенные запросы, все идет быстро (каламбур), а это означает, что консоль регистрирует все ошибки в качестве отменена. Однако если введенный текст содержит пробел, а предыдущий запрос отменяется с помощью быстрого ввода, регистратор пытается распечатать ошибку, но выбрасывает EXC_BAD_ACCESS, , хотя он имеет необязательное связывание! Разве это не должно гарантировать, что ценность не равна нулю, по крайней мере, существует?
Вы когда-нибудь сталкивались с этим?
Благодарим вас за внимание!
NB: удаление строки конечно работает, но я мог бы добавить обработку ошибок в будущем, и эта ошибка действительно пристанет мне
Ha! Определенно, никогда бы не подумал, что один из предоставленной информации. Рад, что ты добрался до конца. – cnoon