iOSは、非同期スレッドBlockからデータを取得する(マスタスレッドリフレッシュデータ)
http://blog.csdn.net/iostiannan/article/details/50750841 これは前の招待状です。もし分からなかったら、ここに行ってまず調べてください。
上のように、当たり前の方法では実現できなくなりました。解決後のコードを先に出します。
ネットワークデータを要求したら、直ちにメインスレッドでデータを更新します。
その後、代理を使って、他のView Controllerに行って、取得するデータを伝えます。
over,退社
上のように、当たり前の方法では実現できなくなりました。解決後のコードを先に出します。
-(void)getTN{
//GCD
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
//
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
manager.responseSerializer = [AFHTTPResponseSerializer serializer];
__block NSString * t =[[NSString alloc] init];
[manager GET:kURL_TN_Normal parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject) {
NSLog(@"Bloct >> tn ==== %@" , operation.responseString);
t = operation.responseString;
//
dispatch_async(dispatch_get_main_queue(), ^{
t = operation.responseString;
NSLog(@"t ===== %@",t);
if ([_delegate respondsToSelector:@selector(getTNWithString:)]) {
[_delegate getTNWithString:t];
}
});
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
}];
});
}
まず、AFNetworkingの処理方法を全体のキューに入れます。dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{....});
そして、このコードブロックにおいて、ネットワークデータ要求を行い、ネットワークデータを要求したら、直ちにメインスレッドでデータを更新します。
その後、代理を使って、他のView Controllerに行って、取得するデータを伝えます。
over,退社