74

メインスレッドfunctionで myを呼び出す方法を知りたいです。

my がメインスレッドfunctionで呼び出されるようにするにはどうすればよいですか?

(これは私の以前の質問に続きます)。

4

4 に答える 4

167

これはそれを行います:

[[NSOperationQueue mainQueue] addOperationWithBlock:^ {

   //Your code goes in here
   NSLog(@"Main Thread Code");

}];

お役に立てれば!

于 2012-07-20T15:38:27.173 に答える
48

アプリがメインスレッドだけで自分のコードを実行することを確認するために従うことができるルールはありますか?

通常、これを確実にするために何もする必要はありません。通常は、リストで十分です。たまたまスレッドを生成し、バックグラウンドでコードを実行する API と対話していない限り、メイン スレッドで実行されます。

本当に確実にしたい場合は、次のようなことができます

[self performSelectorOnMainThread:@selector(myMethod:) withObject:anObj waitUntilDone:YES];

メインスレッドでメソッドを実行します。(GCD に相当するものもあります。)

于 2012-07-20T15:36:51.267 に答える
11

これはクールだと思います。一般的には、メソッドの呼び出し元に、正しいスレッドで呼び出されるようにする責任を負わせるのに適した形式です。

if (![[NSThread currentThread] isMainThread]) {
    [self performSelector:_cmd onThread:[NSThread mainThread] withObject:someObject waitUntilDone:NO];
    return;
}
于 2013-03-07T00:44:34.370 に答える