0
我正在使用dispatch_async块内的ASIFormDataRequest从应用程序发送一些自定义对象到服务器。当我从服务器收到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 for grammatically lesson,difficult when I am working in 3 different language。 – lagos 2012-04-12 12:35:09