Ich sende einige benutzerdefinierte Objekte an einen Server von der App mit ASIFormDataRequest innerhalb eines Dispatch_async Block. Und wenn ich OK vom Server erhalte, muss ich das Objekt in ein NSMutableArray legen. Aber wenn ich versuche, von außen auf das Array zuzugreifen, ist der Block leer.Problem beim Hinzufügen eines benutzerdefinierten Objekts zu NSMutableArray in einem Block
Mein Code Pseudo-Code ist wie folgt:
-(void)sendObjects{
NSMutableArray *sendedObjects = [NSMutableArray alloc]init];
NSMutableArray *objectsToSend = [NSMutableArray alloc]init];
for(ObjectSend *obj in objectsToSend){
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0),^{
ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url];
[request addRequestHeader:@"Content-Type" value:@"application/json"];
[request appendPostData:[NSJSONSerialization dataWithJSONObject:sendDictWithObjects options:NSJSONWritingPrettyPrinted error:&error]];
[request startSynchronous];
NSError *requestError = [request error];
if(!requestError){
NSString *response = [request responseString];
obj.sended = YES;
[sendedObjects addObject:s];
}
});
}
NSLog(@"%i",sendedObjects.count);
}
Und am Ende der sendedObjects Array ist leer. Ich benutze ARC, kann also nicht behalten. Jemand kann mir helfen?
Ich habe es synchron und es funktioniert finden. Dann sah ich, dass die Dispatch-Warteschlange nur eine Standard-Priorität hatte, und es passiert, was Sie gesagt haben, dass der NSLog vor dem Block erreicht ist. Danke für die grammatische Lektion, schwierig, wenn ich in 3 verschiedenen Sprachen arbeite. – lagos