Я пытаюсь использовать новый sendAsynchronousRequest, добавленный в iOS5. У меня есть класс модели (File) с методом, который запрашивает некоторые данные с сервера, а затем передаю это данные в класс контроллера (FilesController), который создал объект модели.
Класс модели имеет метод со следующим кодом:
[NSURLConnection sendAsynchronousRequest:request queue:[[NSOperationQueue alloc] init] completionHandler:^(NSURLResponse *response, NSData *data, NSError *error) {
NSArray *decodedResponse = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil];
NSArray *files = [self _dictionariesToFiles:decodedResponse];
handler(files);
}];
Класс контроллера использует его следующим образом:
[File findAll:conditions completionHandler:^(NSArray *files) {
dataSource = files;
NSLog(@"set");
[self.tableView reloadData];
NSLog(@"reload");
activityIndicator.hidden = TRUE;
}];
В консоли я могу сразу просмотреть как NSLogs показывает сообщения "установить" и "перезагрузить", но таблица и индикатор не изменится, пока не пройдет несколько секунд (5-10 с).
Кто-нибудь знает, в чем проблема?
Спасибо.
PD: Я изменил асинхронный запрос на совместимый синхронизированный, а затем проблема исчезла, но я хочу использовать для этого асинхронный запрос.
Это совместимый код синхронизации:
NSData *responseData = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];
NSArray *decodedResponse = [NSJSONSerialization JSONObjectWithData:responseData options:NSJSONReadingMutableContainers error:nil];
NSArray *files = [self _dictionariesToFiles:decodedResponse];
handler(files);