2011-08-18 5 views
0

私の操作を実装するためにNSOperationをサブクラス化します。MyOperationと呼んでください。NSOperationオブジェクトが非同期コールバックを受信できないのはなぜですか?

MyOperationの実装では、main関数をオーバーライドし、内部に非同期ネットワークのものをいくつか作成し、デリゲートをself(操作オブジェクト)に設定します。ただし、操作オブジェクトはデリゲートコールバックを取得しません。私はコールバックが受信される前に完了していませんでした。

NSOperationはそれをできませんか?

手動で操作を開始すると機能することがわかりました。しかし、それを操作キューに追加すると、操作は実行されますが、そのコールバックを取得できません。

答えて

0

あなたは、このようなmainメソッドにコールバックを設定している場合:

-(void)main{ 
    // setup 
    object.delegate = self 
} 

そして、あなたの主な方法は、実行を継続、完全な、とデリゲートがコールバックを完了するための機会を得る前に消えます。 NSOperationのstartメソッドをオーバーライドし、isFinishedとisExecutingの各プロパティを手動で処理するか、離れていないオブジェクトに対してデリゲートメソッドが呼び出されるようにする必要があります。

適切なメソッドとKVC通知をオーバーライドして機能させる詳細については、NSOperation class referenceを参照してください。

関連する問題