я использовал AFNetworking, чтобы иметь дело с HTTP request.And здесь мой код:Нужно ли вернуться к основному потоку для обновления интерфейса?
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
[manager POST:URL_LOGIN parameters:parames success:^(AFHTTPRequestOperation *operation, id responseObject) {
[self.tableview reloadData];
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"Request failed");
}];
или:
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
[manager POST:URL_LOGIN parameters:parames success:^(AFHTTPRequestOperation *operation, id responseObject) {
dispatch_async(dispatch_get_main_queue(), ^{
[self.tableview reloadData];
});
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"Request failed");
}];
Кто из них прав, делает необходимым использование dispathc_get_main_queue(), или AFNetworking все исправить? Кто-нибудь знает? Спасибо заранее.
AFNetworking ручки. Но для потоковой безопасности вызывают методы обновления интерфейса пользователя в основном потоке. –
AFNetworking используется для вызова обработчиков на основном потоке. К сожалению, это плохо документировано (или недостаточно хорошо). Чтобы быть в безопасности, вы должны явно отправить в любой контекст выполнения, который, по вашему мнению, подходит для вашего обработчика. – CouchDeveloper