25

これの違いは何ですか:

[[NSOperationQueue mainQueue] addOperationWithBlock:^{
    [self doSomthing:object];
}];

この:

[self performSelectorOnMainThread:@selector(doSomething:) withObject:object waitUntilDone:NO]
4

1 に答える 1

36
[self performSelectorOnMainThread:@selector(doSomething:) 
                       withObject:object 
                    waitUntilDone:NO]

呼び出されたときにセレクターを実行します。バックグラウンド スレッドから UI に影響を与えたい場合は、これを使用する必要があります。あなたが言うとYESwaitUntilDoneメソッドが完了するまでスレッドをブロックします。

mainQueueそのブロックをメインスレッドの操作キューに追加しますが、いつ実行されるかは保証されません。そのキューには、まだ実行を待っている他の項目がある可能性があります。

于 2012-05-09T02:38:34.367 に答える