第一种是Notification,这个比较解耦。
-(void)viewDidLoad
{
// add a notification observer
[NSNotificationCenter defaultCenter] addObserver:selector:name:object:]
}
-(void)handle
{
if (fileNameArr.count == 3) {
// do something
}
}
NSMutableArray *fileNameArr = [[NSMutableArray alloc]init];
for (int i= 0; i<[self.imgArr count]; i++) {
NSData *data = [self.imgArr objectAtIndex:i];
[manager POST:url
parameters:nil
constructingBodyWithBlock:
^(id<AFMultipartFormData> formData){
[formData appendPartWithFileData:data
name:@"pic"
fileName:fileName
mimeType:@"image/jpeg"];
} success:^(AFHTTPRequestOperation *operation,id responseObject) {
NSLog(@"success:%@",responseObject);
NSString *str = [[responseObject objectForKey:@"data"] objectForKey:@"fileName"];
[fileNameArr addObject:str];
NSString *ids = [[responseObject objectForKey: @"data"] objectForKey:@"ids"];
// add here
[NSNotificationCenter defaultCenter] postNotificationName:object:]
} failure:^(AFHTTPRequestOperation *operation,NSError *error){
NSLog(@"%@",error);
}];
}
第二种就是,GCD啦,但是代码看起来耦合比较高。
NSMutableArray *fileNameArr = [[NSMutableArray alloc]init];
for (int i= 0; i<[self.imgArr count]; i++) {
NSData *data = [self.imgArr objectAtIndex:i];
[manager POST:url
parameters:nil
constructingBodyWithBlock:
^(id<AFMultipartFormData> formData){
[formData appendPartWithFileData:data
name:@"pic"
fileName:fileName
mimeType:@"image/jpeg"];
} success:^(AFHTTPRequestOperation *operation,id responseObject){
NSLog(@"success:%@",responseObject);
NSString *str = [[responseObject objectForKey:@"data"] objectForKey:@"fileName"];
[fileNameArr addObject:str];
NSString *ids = [[responseObject objectForKey: @"data"] objectForKey:@"ids"];
// here
if (fileNameArr.count == 3) {
dispatch_async(dispatch_get_main_queue(), ^{
// handle
});
}
} failure:^(AFHTTPRequestOperation *operation,NSError *error){
NSLog(@"%@",error);
}];
}