UPD: semble ce n'est pas la bonne solution, en fonction de la file d'attente.h-tête comme mentionné @demosten
La première pensée a été apporté à moi, quand j'avais besoin de cette fonctionnalité a été la ligne:
dispatch_get_main_queue() == dispatch_get_current_queue();
Et avait cherché à la solution
[NSThread isMainThread];
J'ai décidé de comparer la méthode est plus rapide. Donc, en utilisant ce code:
BOOL b;
NSDate* start = [NSDate date];
for(int i = 0; i < 1000; ++i){
b = dispatch_get_main_queue() == dispatch_get_current_queue();
}
NSDate* end = [NSDate date];
NSLog(@"Time 1: %f, res: %i", [end timeIntervalSinceDate:start], b);
start = [NSDate date];
for(int i = 0; i < 1000; ++i){
b = [NSThread isMainThread];
}
end = [NSDate date];
J'avais obtenu ce message:
2013-07-14 20:47:34.030 MyApp[10032:8a0b] Time 1: 0.000050, res: 0
2013-07-14 20:47:34.058 MyApp[10032:8a0b] Time 2: 0.000123, res: 0
Donc, mine de solution à 2,5 fois plus rapide.
Mais la ligne est tellement désagréable...
PS Et oui, j'avais vérifié, ça fonctionne pour tous les threads