Я пытаюсь запустить метод в фоновом режиме, но он по-прежнему блокирует программу. Это мой код:Многопоточность в Objective-C
- (void)viewDidLoad
{
[super viewDidLoad];
self.MessagesList=[[MessagesArray alloc] init];
[self performSelectorInBackground:@selector(backgroundMethod) withObject:nil];
}
-(void)backgroundMethod
{
if ([MessagesList updateFromServer]){
[self.Table reloadData];
CFRunLoopRun();
}
}
Хотя updateFromServer посылает запрос HTTP на сервер и ждет ответа, сервер задерживает ответ на 10 секунд, и результат в том, что вся программа задерживается на 10 секунд слишком. Вы можете меня исправить?
Обновление: я добавил строку runloop, но проблема остается прежней. HTTP-запрос является асинхронным, но все же - вся программа ждет, пока сервер не ответит. Это мой метод updateFromServer:
responseData = [NSMutableData data];
[self setBaseURL:[NSURL URLWithString:@"http://localhost:8000/messages/views/new_messages/"]];
NSURLRequest *request =
[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://localhost:8000/messages/views/new_messages/"]];
NSURLConnection* connection = [[NSURLConnection alloc] initWithRequest:request delegate:self];
return TRUE;
Как я могу сделать его асинхронным?
Как насчет использования NSThread? –
Я тоже попробовал. ничего не меняется. спасибо –