ASIHTTPRequest Проблема - PullRequest
       8

ASIHTTPRequest Проблема

2 голосов
/ 06 октября 2010

Кто-нибудь еще имеет эту проблему с ASIHTTPRequest? Кажется, что когда я выполняю асинхронный запрос из фонового потока с делегатом, установленным для экземпляра, я могу столкнуться с проблемами, поскольку делегат может быть освобожден до того, как запрос (который помещен в NSOperationQueue) возвращает обратный вызов.

Кажется, что ASIHTTPRequest не сохраняет свой делегат - с другой стороны, NSURLConnection от Apple сохраняет делегат («NSURLConnection сохраняет свой делегат, когда он инициализируется. Он освобождает делегат, когда соединение завершает загрузку, происходит сбой или отменяется»). ".).

Должен ли я выполнять синхронные запросы ASIHTTP в фоновых потоках для выполнения этой работы (вместо асинхронных запросов)? Или, может быть, я должен сбросить ASIHTTPRequest? Или я просто сумасшедший?

Ответы [ 2 ]

7 голосов
/ 07 октября 2010

Если вы используете самую последнюю версию ASIHTTPRequest, правильный способ работы с ней (и предотвращения сбоев) заключается в следующем:

Делегат должен сохранить запрос (и запрос не должен сохранять делегата)

Делегат должен сделать следующее, когда делегат уничтожен (или когда вы хотите отменить запрос):

[request setDelegate:nil];    
[request cancel];
[request release];

Вы не должны получать сбои таким образом. (Я переписал обработку делегата в ASIHTTPRequest несколько месяцев назад именно для того, чтобы избежать некоторых из этих проблем, и перед тем, как это сделать, я проверил у ребят из Apple, что это правильный способ обработки. на github, хотя с тех пор не было официального релиза - то есть, эти изменения отсутствуют в версии v1.7, поэтому в v1.7 или более ранних версиях вы все равно могли видеть сбои, следуя приведенному выше совету.

0 голосов
/ 06 октября 2010

Я не знаю, сохраняет ли объект ASIHTTPRequests объект, но пытались ли вы сохранить его при выполнении и после освобождения в конце?

У меня никогда не было проблем с этой очень хорошей упаковкой ^^

...