私は他のスレッドで処理する必要があるコールバックを定期的に取得しています。これらの処理メソッドを1つのスレッドにキューして、順番に実行したいと思います。私は生のNSThread(仕事が多すぎるため)を使いたくないし、GCDを使いたくない(iOS 3.1をサポートする必要があるため)。 NSOperationを見始めましたが、サブクラス化、必要なデータの受け渡しなどが必要です。次にrunLoopsについて考えるようになりました...とにかく、タスクを達成するための便利な方法は何ですか?他のスレッドでメソッドコールバックをキューに入れる方法は?
0
A
答えて
1
NSOperationは、実行ループよりもセットアップがクリーンです。あなたはあなたのコールバックが何であるかは言わない。彼らは機能していますか?セレクタ?ブロック?オブジェクト?
NSOperationサブクラスはmainをオーバーライドするだけで、コールバックを操作に渡すことができます。
@interface MyOperation : NSOperation
{
@private
CallbackType callback; // is e.g. a function pointer
void* context; // a parameter for the callback as an example
}
-(id) initWithCallback: (CallbackType) newCallback;
andContext: (void*) newContext;
@end
@implementation MyOperation
-(id) initWithCallback: (CallbackType) newCallback
{
self = [super init];
if (self != nil)
{
callback = newCallback;
context = newContext;
}
return self;
}
-(void) main
{
callback(context);
}
@end
+0
私はソケットストリームで作業していますが、ストリームからデータを読み込むときに - (void)stream:(NSStream *)theStream handleEvent:(NSStreamEvent)streamEventを呼び出しています。そして私は、ストリームを読み込み処理をキューに入れたいと思います。しかし、私はパスを持っている必要があります(現在のtheStreamへのハンドラ、宣言されたinputStreamおよびoutputStreamへのポインタ、バッファ(NSMutableData)を渡すポインタが必要です)。 – Centurion
関連する問題
- 1. JavaのTomcat特定のHTTPスレッドのみをキューに入れる方法は?
- 2. スレッド入力キュー
- 3. イベントをキューに入れる前にイベントをキューに入れる方法
- 4. カーネルapcをキューに入れる方法
- 5. 他のアクションの結果からアクションをキューに入れる方法
- 6. 他のスレッドのデータベースにデータを挿入する方法
- 7. Webアプリケーションでユーザーをキューに入れる方法は?
- 8. Quartzで失効したジョブをキューに入れる方法は?
- 9. Jasmine:メソッドコールバックをスパイする方法:method.then()
- 10. キューに入れられたマップを実装する方法は?
- 11. セロリのpythonでキューに入れずにキューに入れたい仕事を送る方法
- 12. 2つのオブザーバブルをキューに入れる方法は?
- 13. Android - バックグラウンドスレッドで複数のジョブをキューに入れる方法
- 14. 将来の\ addの結果をCythonの別のスレッドからキューに入れる方法は?
- 15. jQuery ajaxリクエストをキューに入れる方法は?
- 16. javascriptでコードをキューに入れる方法
- 17. Javaでメソッドをキューに入れる方法
- 18. 他のスレッド内でスレッドを開始する方法
- 19. javax.mail.Messageのカスタムカスタムオブジェクトをjmsキューに入れる方法(Activemqを使用)
- 20. javascriptでHTMLファイルの複数セクションのプリントをキューに入れる方法は?
- 21. bashからrawオーディオファイルのセットをキューに入れる方法
- 22. QBXML、Web Connectorと別のリクエストをキューに入れる方法
- 23. NUnitテストケースのリストをキューに入れる方法
- 24. GWT:イベントをキューに入れる方法(Swing invokeLater()に相当)?
- 25. CircleCI:ビルドを強制的にキューに入れる方法
- 26. RxJで複数の同じhttpリクエストを処理/キューに入れる方法は?
- 27. Railsヘルパーを使用してJSをキューに入れる方法
- 28. フラグメントのビューを他のスレッドに変更する方法は?
- 29. ファイルをキューに入れる
- 30. デリゲートをC#でバックグラウンドで直列に実行する方法をキューに入れる方法は?
スレッドは決して単純ではありません。あなたはいつもそれらを使用するときにいくつかの作業を行う必要があります。 – v1Axvw