Я отправляю некоторые пользовательские объекты на сервер из приложения с ASIFormDataRequest внутри блока dispatch_async. И когда я получаю OK с сервера, мне нужно поместить объект в NSMutableArray. Но когда я пытаюсь получить доступ к массиву извне, этот блок пуст.Не удается добавить настраиваемый объект в NSMutableArray внутри блока
Мой код псевдокод, как это:
-(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);
}
И в конце массива sendedObjects пуст. Я использую ARC, поэтому не могу сохранить. Кто-нибудь может мне помочь?
Я сделал это синхронно, и он нашел работу. Затем я увидел, что очередь отправки имеет приоритет по умолчанию, и происходит то, что вы сказали, что NSLog достигнут до блока. Thanx для грамматического урока, трудно, когда я работаю на 3 разных языках. – lagos