Интерфейс подобен контракту, в котором вы хотите, чтобы ваш класс реализации реализовал методы, написанные в контракте (интерфейс). Поскольку Java не предоставляет множественное наследование, программирование для интерфейса является хорошим способом достижения цели множественного наследования. Если у вас есть класс A, который уже расширяет какой-либо другой класс B, но вы хотите, чтобы класс A также следовал определенным рекомендациям или реализовывал определенный контракт, тогда вы можете сделать это путем программирования стратегии интерфейса.
Ошибка зарегистрирована в Mac Developer Library (iOS docs)
Соответствующий сегмент из документации будет:
Коды ошибок системы загрузки URL
Эти значения возвращаются как свойство кода ошибки объекта NSError с доменом «NSURLErrorDomain».
blockquote>enum { NSURLErrorUnknown = -1, NSURLErrorCancelled = -999, NSURLErrorBadURL = -1000, NSURLErrorTimedOut = -1001,
Как вы можете видеть ;
-999
вызваноErrorCancelled
. Это означает: выполняется другой запрос до завершения предыдущего запроса.
Я не использовал API Facebook Corona SDK, но я столкнулся с этой проблемой при использовании Alamofire, secondRequest
всегда отменяют исполнение с ошибкой -999, согласно сообщениям, которые я нашел в Интернете, причина в том, что session
свойство deinit
до завершения работы async, так как оно выходит за рамки, я, наконец, решил эту проблему с помощью свойства deinit
сеанса вручную, поэтому компилятор не будет деактивировать его в неправильном положении:
class SessionManager {
var session:SessionManager?
init() {
self.session = SessionManager(configuration:URLSessionConfiguration.ephemeral)
}
private func firstRequest() {
guard let session = self.session else {return}
session.request(request_url).responseData {response in
if let data=response.data {
self.secondRequest()
}
}
private func secondRequest() {
guard let session = self.session else {return}
session.request(request_url).responseData {response in
if let data=response.data {
self.secondRequest()
}
//session will no longer be needed, deinit it
self.session = nil
}
}
hjpotter92 абсолютно прав, я просто хочу предоставить решение для своего дела. Надеюсь, это полезно и вам. Вот моя ситуация:
На странице входа в систему> нажмите в журнале> всплывающее диалоговое окно загрузки> журнал вызовов в службе> отменить диалог> нажать другой экран> вызвать другую услугу -> вызвать ошибку -999
Чтобы исправить это, я установил задержку между отклонением диалога и нажатием нового экрана:
[indicatorAlert dismissWithClickedButtonIndex:0 animated:YES];
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 0.01 * NSEC_PER_SEC), dispatch_get_main_queue(), ^{
[self performSegueWithIdentifier:@"HomeSegue" sender:nil];
});
Странно, что эта проблема возникает только на iOS 7.