メインスレッドfunction
で myを呼び出す方法を知りたいです。
my がメインスレッドfunction
で呼び出されるようにするにはどうすればよいですか?
(これは私の以前の質問に続きます)。
これはそれを行います:
[[NSOperationQueue mainQueue] addOperationWithBlock:^ {
//Your code goes in here
NSLog(@"Main Thread Code");
}];
お役に立てれば!
アプリがメインスレッドだけで自分のコードを実行することを確認するために従うことができるルールはありますか?
通常、これを確実にするために何もする必要はありません。通常は、リストで十分です。たまたまスレッドを生成し、バックグラウンドでコードを実行する API と対話していない限り、メイン スレッドで実行されます。
本当に確実にしたい場合は、次のようなことができます
[self performSelectorOnMainThread:@selector(myMethod:) withObject:anObj waitUntilDone:YES];
メインスレッドでメソッドを実行します。(GCD に相当するものもあります。)
これはクールだと思います。一般的には、メソッドの呼び出し元に、正しいスレッドで呼び出されるようにする責任を負わせるのに適した形式です。
if (![[NSThread currentThread] isMainThread]) {
[self performSelector:_cmd onThread:[NSThread mainThread] withObject:someObject waitUntilDone:NO];
return;
}