Я пытаюсь выполнить асинхронный запрос с ASIHTTPRequest, но есть некоторые проблемы с уведомлением о том, когда запрос выполнен.ASIHTTPRequest, EXC_BAD_ACCESS, когда запрос завершен
-(void)doDownload{
NSURL *url = [NSURL URLWithString:@"http://www.someurl.com/?"];
ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url];
[request setPostValue:@"someValue" forKey:@"someField"];
[request setRequestMethod:@"POST"];
[request setDelegate:self];
[request setDidFinishSelector:@selector(requestFinished)];
[request startAsynchronous];
}
- (void)requestFinished:(ASIHTTPRequest *)request
{
// Use when fetching text data
NSString *responseString = [request responseString];
}
requestFinished никогда не вызывается. Я получаю исключение в ASIHTTPRequest.m, -handleStreamCompleted:
if (fileError) {
[self failWithError:fileError];
} else {
[self requestFinished]; <----- this call fails
}
Есть улики?
Это, кажется, правильный ответ. У меня есть проблема управления жизненным циклом, которая нуждается в решении. Теперь я создаю класс загрузки, вызываю метод и сразу же выпускаю. Я должен реализовать некоторую систему обратного вызова, чтобы позволить владельцу экземпляра загрузки знать, когда все будет сделано. Мне это нужно в любом случае, чтобы скрывать представления прогресса и обновлять данные и т. Д. Спасибо. – Vegar
Как это можно сделать при работе с ARC? См. Мою [тему здесь] (http://stackoverflow.com/questions/8355974). – dhrm
Tosh. @tomute прав, имя селектора requestFinished :, not requestFinished, вот и вся проблема. Не нужно ломать свою симпатичную маленькую голову на протяжении жизненных циклов и сохраняет и прочее. –