バックグラウンド スレッドでセレクターを実行している場合、メイン スレッドを呼び出す必要があり、完全に機能しますが、バックグラウンドで実行されているセレクターが多数あり、メイン スレッドでセレクターを呼び出そうとすると、呼び出されることがあります。 、そうでない場合もあります。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];
うまくいくときとうまくいかないときがあるのはなぜですか?