これを理解しようとしています:マルチスレッドは別のスレッドでメソッドを実行する方法なので、メインスレッドをハングしません)。iphone - この種のマルチスレッド操作のロジックは何ですか
これはメインのコードに行く:スレッドがしようとする場合:
[NSThread detachNewThreadSelector:@selector(createNewThread) toTarget:self withObject:nil];
、ここでは、スレッドがこれで私の問題がある
-(void) createNewThread {
NSAutoreleasePool* p = [[NSAutoreleasePool alloc] init];
[self performSelectorOnMainThread:@selector(doSomeStuff) withObject:nil waitUntilDone:YES];
[p release];
}
行くしかし、私はこのようなものを見てきましたメインスレッドが何かをやらないようにしてください。なぜperformSelectorOnMainThreadを使ってdoSomeStuffが呼び出されていますか?それは気違いじゃない?つまり、あなたはメインスレッドで何かを実行するために2番目のスレッドを起動します。スレッドは実際には使用しないでください。
私はWeb上でこのように多くのコードを見てきました。
おそらくそれはスレッドセーフではない何かをしているので、そのように行われていますが、これは本当に便利ですよね?私には全く役に立たないと聞こえて、何かをする方が良いでしょう。
[self performSelector:@selector(doSomeStuff) withObject:nil afterDelay:0.01];
あなたはどう思いますか?ありがとうございます。
これはコード全体ですか、スレッドは何か他のことをしていますか? – JustSid
いいえ、私はこのようなスレッドの多くの例を見てきました。おそらく、カウンターや他のもののようないくつかのコントロール変数はそれほど重要ではないかもしれませんが、多くの場合、performSelectonOnMainThreadで起動されるメソッドによって実際に行われます。あなたが尋ねたところで、私はあなたがあまりにもこのことを狂っていると思います。 – SpaceDog