私のアプリがメインスレッドで自分のコードを実行することを確認するために従うことができるルールはありますか?
通常、これを保証するために何もする必要はありません。通常、物事のリストで十分です。スレッドを生成してバックグラウンドでコードを実行するAPIを操作しない限り、メインスレッドで実行されます。
本当に確認したい場合は、次のようなことができます
[self performSelectorOnMainThread:@selector(myMethod:) withObject:anObj waitUntilDone:YES];
メインスレッドでメソッドを実行します。 (GCDに相当するものもあります。)
これはそれを行います:
[[NSOperationQueue mainQueue] addOperationWithBlock:^ {
//Your code goes in here
NSLog(@"Main Thread Code");
}];
お役に立てれば!
iOS> = 4を使用している場合
dispatch_async(dispatch_get_main_queue(), ^{
//Your main thread code goes in here
NSLog(@"Im on the main thread");
});
私はこれがクールだと思いますが、一般的には、正しいスレッドで呼び出されることを保証する責任があるメソッドの呼び出し元を残すのに良い形です。
if (![[NSThread currentThread] isMainThread]) {
[self performSelector:_cmd onThread:[NSThread mainThread] withObject:someObject waitUntilDone:NO];
return;
}