私は操作キューと呼び出し操作をセットアップしました。呼び出しが完了したことを通知する必要がありますか?操作キューがどのように呼び出しを終了し、次のものに移るのを知っているのではないか?操作キューは、一度に1つの操作を実行するように設定されています。NSInvocationOperationとNSOperationQueueの適切な使用
0
A
答えて
3
いいえ、呼び出しが完了したことを通知する必要はありません。 NSOperationQueueは、そのisFinished
プロパティがYESに設定されているときに操作が終了したことを認識します。これは、操作の-main
メソッドが復帰したときにデフォルトで発生します。
NSInvocationOperationの-main
メソッドは、すべての目的と目的のために、そのNSInvocationを呼び出して戻ります。したがって、呼び出しが完了した直後にisFinished
フラグをYESに設定する必要があります。それはあなたが本当にここに欲しいもののように思える
1
ブーン、
はNSOperationを自分でサブクラス化し、その中にあなたの非同期を呼び出すことです。非同期コードが完了し、コールバックを取得すると、KVO経由でisExecutingおよびisFinishedが更新されます。これはデイブDribinのブログで、上ではるかに詳細に説明されています
http://www.dribin.org/dave/blog/archives/2009/05/05/concurrent_operations/
0
それはNSInvocationOperationの自動です。あなたはすでにいいですね。
アプリの他の部分に操作が完了したことを伝える必要がある場合は、通知を使用できます。通知が正しいスレッドに送られていることを確認してください。 iPhoneでは、通知に応じてUIを頻繁に変更するため、メインスレッドに送信します。すべてのUIはメインスレッドで実行する必要があります。
[self performSelectorOnMainThread:@selector(postOpDoneNote) withObject:nil waitUntilDone:NO];
-(void) postOpDoneNote
{
[[NSNotificationCenter defaultCenter] postNotificationName:@"someOpDone" object:self];
}
関連する問題
- 1. iPhoneでのObjective-C - NSOperationQueueとNSInvocationOperationの使用
- 2. PyQt emit()とpyqtSignal()の適切な使用
- 3. イベントの適切な使用
- 4. strncmpの適切な使用
- 5. RealmRecyclerViewAdapyterの適切な使用
- 6. データテーブルの適切な使用
- 7. flatMapの適切な使用
- 8. call_user_func_arrayの適切な使用
- 9. update_user_metaの適切な使用
- 10. GLKBaseEffectの適切な使用
- 11. FileTreeの適切な使用
- 12. スウィフトガードの適切な使用?
- 13. アサートの適切な使用
- 14. setup_eager_loadingの適切な使用
- 15. 404の適切な使用
- 16. オブジェクトの適切な使用
- 17. クラスインスタンスの適切な使用
- 18. パラメータの適切な使用
- 19. aspセッションの適切な使用と可能なインターフェイスの使用
- 20. NSInvocationOperationとNSBlockOperation
- 21. DateTimeOffset適切な使用
- 22. 適切な使用法
- 23. スーパー用の適切な使用コードセクション。 Log.d
- 24. WPFでのVirtualizingStackPanelの適切な使用
- 25. OracleでのDataReaderの適切な使用?
- 26. DelphiでのTMultiViewの適切な使用
- 27. .NETでのSqlConnectionの適切な使用
- 28. Pythonでのmixinsの適切な使用
- 29. ガーキンの適切な文法の使用
- 30. JavaのArrayListの適切な使用
私のタスクは、(画像をカメラロールに書き込むために)7秒かかることがあります。そのため、メモリを過負荷にしすぎると同時に実行することはあまりありません。イメージの保存が完了するまで、操作を続行しないようにするにはどうすればよいですか。画像保存操作には、保存された画像を示すコールバックがあります。 – Boon
[theQueue setMaxConcurrentOperationCount:1]を使用すると、一度に1つだけが実行されます。 –