0

メソッド呼び出しを addOperationWithBlock でラップすることと、メソッド実装全体を addOperationWithBlock でラップすることの違いは何ですか?

foo というメソッドがあるとします。

間に違いはありますか

- (void) foo{
             [NSOperation mainQueue] addOperationWithBlock:^{
                                     some code
             }];
         }

[NSOperation mainQueue] addOperationWithBlock:^{
                                                [self foo];
}];
4

1 に答える 1

0

違いは、最初のケースでは、メソッド foo は常にmainQueue(別のスレッドから呼び出された場合でも) 上で実行されるのに対し、2 番目のケースでは、正しいスレッドでそれを実行する責任は、メソッドを呼び出した人に委譲されることです。

fooメインスレッドで実行したくない状況がある場合は、最初のオプションを選択しないでください。一方、foo が常にメイン スレッド (つまり、UI 操作) で実行されることになっている場合は、最初のコード スニペットが適しています。

于 2013-09-24T14:34:22.930 に答える