In Ordnung, ich bin ein wenig neu in Threads, so habe ich diese Frage. Ich versuche, Informationen von Freunden von Facebook zu erhalten, und ich möchte nicht, dass auf dem Haupt-Thread zu tun. aber aus irgendeinem Grund, wenn die Anforderung nicht auf dem Haupt-Thread der Callback nie aufgerufen wird und ich weiß nicht, warum!
Ich habe ein Array mit allen IDs von meinen Freunden und Schleife durch dieses Array und erstellen Sie ein Objekt meiner benutzerdefinierten Klasse Friend (die alle Informationen, die ich brauche) mit jeder ID. Ich füge dieses Objekt zu einem Array hinzu. Dieses Friend-Objekt stellt eine Anfrage an Facebook und verarbeitet die Antwort, um die gewünschten Daten zu erhalten.
Hier ist der Code:
dispatch_async(dispatch_get_global_queue(0, 0), ^(void) {
[self getFBFriendsInfo];
});
-(void)getFBFriendsInfo{
if (friendsInfoArray) {
[friendsInfoArray removeAllObjects];
}
else{
friendsInfoArray =[[NSMutableArray alloc]init];
}
for (int i=0; i<[UDID count]; i++) {
NSString *udid = [UDID objectAtIndex:i];
FriendsInfo *friend =[[FriendsInfo alloc] initWithFacebook:facebook andUdid:udid];
[friendsInfoArray addObject:friend];
[friend release];
}
dispatch_async(dispatch_get_main_queue(), ^(void) {
[delegate friendsInfosAvailable:friendsInfoArray];
});
}
und in meiner benutzerdefinierten Klasse tue ich dies:
[facebook requestWithGraphPath:udid andDelegate:self];
Damit werden die Callbacks nie aufgerufen! Nur wenn ich die Anfrage auf dem Hauptthread ausführe, funktioniert es:
dispatch_async(dispatch_get_main_queue(), ^(void) {
[facebook requestWithGraphPath:udid andDelegate:self];
});