我在dispatch_async块中使用ASIFormDataRequest从应用程序向服务器发送一些自定义对象。当我从服务器收到OK时,我需要将对象放在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,所以无法保留。有人可以帮帮我吗?
答案 0 :(得分:1)
您的请求可能是同步的,但您可以从计划并发执行的块中调度它们。这意味着可以在调度任何请求之前到达NSLog语句。您有两种方法可以解决您的问题:
顺便说一下,发送的过去形式是发送。