1

バックグラウンド スレッドでセレクターを実行している場合、メイン スレッドを呼び出す必要があり、完全に機能しますが、バックグラウンドで実行されているセレクターが多数あり、メイン スレッドでセレクターを呼び出そうとすると、呼び出されることがあります。 、そうでない場合もあります。NSLog(); で印刷しているので、コードがそこに到達していることがわかります。

これは、バックグラウンドでセレクターを呼び出す方法です。

NSOperationQueue *queue = [NSOperationQueue new];
NSInvocationOperation *operation = [[NSInvocationOperation alloc]
                                        initWithTarget:self
                                        selector:@selector(getPath:)
                                        object:datos];
[queue addOperation:operation];
[operation release];

バックグラウンド メソッドがメイン スレッド メソッドを呼び出す方法は次のとおりです。

NSLog(@"Arrives here");
[self performSelectorOnMainThread:@selector(setPath:) withObject:array waitUntilDone:YES];

うまくいくときとうまくいかないときがあるのはなぜですか?

4

1 に答える 1