Я использую NSURLSession, чтобы получить значения для заполнения TableView. Я обновляю TableView в обработчике завершения, но использование [[NSThread currentThread] isMainThread]
показало мне, что обработчик завершения не работает в основном потоке. Поскольку я должен только обновлять пользовательский интерфейс из основного потока, я знаю, что это неверно. Есть ли способ вызвать действие в основном потоке из обработчика завершения? Или использует NSURLSession неправильно, чтобы обойти это?
NSURLSession *session = [NSURLSession sharedSession];
[[session dataTaskWithURL:[NSURL URLWithString:@"http://myurl"]
completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
NSError *jsonError = nil;
NSArray* jsonUsers = [NSJSONSerialization JSONObjectWithData:data options:0 error:&jsonError];
if (jsonError) {
NSLog(@"error is %@", [jsonError localizedDescription]);
// Handle Error and return
return;
}
self.userArray = jsonUsers;
[self.userTableView reloadData];
if ([[NSThread currentThread] isMainThread]){
NSLog(@"In main thread--completion handler");
}
else{
NSLog(@"Not in main thread--completion handler");
}
}] resume];