iOSは、非同期スレッドBlockからデータを取得する(マスタスレッドリフレッシュデータ)


http://blog.csdn.net/iostiannan/article/details/50750841 これは前の招待状です。もし分からなかったら、ここに行ってまず調べてください。
上のように、当たり前の方法では実現できなくなりました。解決後のコードを先に出します。

-(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,退社