私はこのような別のスレッドで同期私のASIHTTPrequestを開始します。バックグラウンドスレッドのASIHTTPRequest/AFNetworkingからcompletionBlockを実行できますか?
//inside this start method I create my ASIHTTPRequest and start it
dispatch_async(dispatch_get_global_queue(0, 0), ^{
[process start];
});
しかしcompletionBlockはまだメインスレッド上で起動されます。 要求が開始された場所と同じスレッドでcompletionBlockの実行を維持できますか?
これを解決するために私が思いつくことができるのは、ディスパッチキューを定義して、手動でcompletionBlockを同じスレッドで実行して、作成されたキューへの参照を保持することです。しかし、それは、コードの残りを作成されたディスパッチキューにリダイレクトする前に、メインスレッドで気をつけている小さな瞬間を渡すため、直接解決できません。
誰かがより良い解決策を持っていますか?
EDIT:同じことが...またAFNetworking終了ブロックについても同様です
この例を投稿してもよろしいですか?私は同じことに苦労していますが、私はObj-Cに堪能ではなく、あなたのソリューションを実装する方法を理解していません。ありがとう! – Julian
例を使って答えを更新しました。もはやそれを必要としないときにrequestQueueを解放するようにしてください。インスタンス変数を作成し、それをdispatch_release(requestQueue)で解放する方が良いです。 – Yannick
AFHTTPRequestOperationはこれらのプロパティを持っていないようです...今は "completionQueue" – shim