NSThreadsに関して私が見つけることができるすべての例/チュートリアルと、私がこれまでに対処した唯一の方法は[NSThread detachNewThreadSelector:@selector(processDataMethod) toTarget:self withObject:nil];
、メソッド内のすべての処理を独自のautoreleasePoolなどを備えた別のスレッドに移動することです.
これは、実行して「消える」だけの「一撃」操作に適しています。
バーストで多くの小さな Web サービス呼び出しを行う必要があり、アプリケーションの実行中に存在する NSThread オブジェクトを作成したいと考えています。ほとんどの場合、バーストが発生したときに多くの新しいスレッドが生成されるのを防ぎます。
私は見てinitWithTarget
、[NSThread start]
私がやろうとしていることを扱っているようです。どのように組み立てるか、スレッドがオブジェクトに入るか、オブジェクトをスレッドに渡すかなど、よくわかりません。
疑似コード/説明の方法で、これを実装しようとしています:
MyController;
@interface
NSThread *threadProperty; //a property, holding a thread I would like to message
MyWebService *webServiceObject; //the Class that holds web service methods e.g. - (NSArray*) searchFor:(NSString*) searchStr;
on viewDidLoad:
instantiate webServiceObject;
instantiate threadProperty;
hand threadProperty the webServiceObject.
start the thread. //make it go forever with [[NSRunLoop currentRunLoop] run];
on user does something:
tell the thread to tell the webServiceObject to searchFor:@"Foo";
on thread has a response:
thread says webServiceObject says there are 19 @"Foo" up in the cloud.
私はそれを機能させる方法をいじっていましたが、それを実装するための「パターン」を考え出すのに十分なほど主題を理解していないことに気付きました. 特定のメソッドを呼び出す必要があるたびにスレッドを生成するのではなく、別の連続スレッドに存在するオブジェクトにメソッド呼び出しのクラスターを実装しようとしていると思います (500 ミリ秒以内に連続して 8 回発生する可能性があります)。すべて2分間)。
それが理にかなっており、スレッドの経験がもう少し豊富な人が私を正しい方向に向けてくれることを願っています.
この投稿は、私が試したものにかなり近いものです: performSelect の使用方法...