Стартовый стек операции AFJSONRequestOperation
Допустим, у меня есть что-то вроде этого:
AFJSONRequestOperation *operation = ...
[operation start];
Когда вызывается запуск операции, где находится эта операция? В какой очереди? Есть ли какая-либо глобальная (для класса) очередь операций, в которую помещена эта операция, и я могу получить доступ к этой операции?
Поскольку мне нужно было бы вызвать (в некоторых случаях) [операция остановится] (может быть, не так, а просто удалить операцию из очереди и остановить ее) из другого метода, есть ли способ сделать это?
Или я должен использовать переменную экземпляра AFJSONRequestOperation, а затем получить к нему доступ таким образом? Хотя у меня много разных операций, и это заставило бы меня создать много переменных экземпляра, так что, если есть какой-то другой способ.
Спасибо.
1 ответ
Я не особенно знаком с AFNetworking, но насколько я знаю AFJSONRequestOperation
использования NSURLConnection
внутренне.
Если вы просто позвоните start
на самой операции он выполнит запрос в фоновом потоке, предоставленный NSURLConnection
, Поэтому он не будет ни в одной очереди. Вы должны хранить ссылку на операцию самостоятельно, чтобы предотвратить ее освобождение, и использовать какой-либо обратный вызов или блок для обработки результатов, возможно, что-то, предоставленное AFJSONRequestOperation
или через Key Value Observing
isFinished
собственность NSOperation
,
В качестве альтернативы, потому что AFJSONRequestOperation
является NSOperation
Вы можете добавить это к NSOperationQueue
что вы создали или, возможно, один предоставлен какой-то другой фреймворк. В этом случае NSOperationQueue
позвоню start
метод для вас, и управлять временем жизни объектов в процессе его обработки. Опять же, вам придется определить наилучший способ обработки результатов после завершения операции.