2016-03-25 7 views
1

です:AFHTTPSessionManager成功コールバック私はAFHTTPSessionManagerを使用して要求を持っているメインスレッドで

AFHTTPSessionManager *manager = [AFHTTPSessionManager manager]; 
    [manager.requestSerializer setValue:@"application/json" forHTTPHeaderField:@"Content-Type"]; 
    [manager.requestSerializer setAuthorizationHeaderFieldWithUsername:@"username" password:@"password"]; 

    [manager GET:[NSString stringWithFormat:@"%@post/%ld",C_baseURL,(long)post_id] parameters:nil progress:^(NSProgress * _Nonnull downloadProgress) { 

     // this called not in main thread 

    } success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) { 

     // this called in main thread 

    } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) { 

     // this called in main thread 

    }]; 

私はsuccessfailureコールバックがメインスレッドであることを確認してください。
コールバックをprogressコールバックのようにメインスレッドで実行しないようにするにはどうすればよいですか?

答えて

2

operationQueueを設定して、デリゲートメソッドの呼び出し方法を選択し、completionQueueで完了ブロックの呼び出し方法を選択できます。

+0

ありがとう@Wain、しかし、私はグーグルでこれを行う方法をもっと手がかりにすることができます。私はグーグルではありましたが、まだ 'operationQueue'と' completionQueue'を設定する手がかりがありません – dann

+1

'manager.completionQueue = someDispatchQueue'おそらく 'someDispatchQueue'はバックグラウンド補完ハンドラのために作成したキューです。 'operationQueue'(あなたの質問に無関係なように見える)を本当に設定したいのであれば、' manager.operationQueue = someOperationQueue'でしょう。 – Rob

+0

ワインと@Robありがとう、私は今理解しています:) – dann

関連する問題