2011-07-15 17 views
3

私が作業しているアプリケーションのバックグラウンドスレッド経由でWebサービスからのデータを更新する必要があります。NSOperationで非同期プロセスを実行する方法

通常、これはNSOperationのmain()関数でNSOperationQueueと同期Webリクエストを介して行います。

しかし、この特定のデータフェッチの場合、アプリケーションではOAuthを使用する必要があり、使用するライブラリOAuthConsumerは、成功/失敗の代理メソッドコールバックを使用して非同期要求によってWebサービスに要求を実行します。

私の問題は、main()関数の終了に達したときに(私の理解であるように)私の操作プロセスが破棄され/クリーンアップされ、操作が操作キューをポップしてしまうために、スタック。

これは正確ですか?

NSOperationQueueでこれを行う方法はありますか?そうでない場合は、デリゲートコールバックを処理できる非同期の方法でバックグラウンドスレッド経由でデータを取得するための現在のベストプラクティスは何ですか?

+2

チェックこのhttp://stackoverflow.com/questions/1596160/asynchronous-methods-in-nsoperation – Jhaliya

+0

@Jhaliyaあなたは答えとしてこれを残せば、私は喜んでそれを受け入れるだろう。ありがとう – cpjolicoeur

答えて

1

操作が完了するまで実行ループを続行できます。実行するのは、非同期操作を開始し、実行ループが完了するまで実行し続けることです。完全なフラグは、すべての非同期(OAuth)項目が完了したときに設定するインスタンス変数になります。

complete = NO; 
//Start async operations 
while (!complete) { 
    [[NSRunLoop currentRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate distantFuture]]; 
} 

... 

-(void)completeCallback 
{ 
    complete = YES; 
} 
関連する問題