zoukankan      html  css  js  c++  java
  • 怎么在一个线程结束后回到主线程?

    第一种是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);
          }];
       }
  • 相关阅读:
    暂存未看的网址
    学习springboot+shiro的实际应用demo
    mapper.xml 的配置
    使用idea搭建Spring boot+jsp的简单web项目
    一文读懂SpringCloud与Eureka,Feign,Ribbon,Hystrix,Zuul核心组件间的关系
    .net core mvc 类库读取配置文件
    .net Core 2.0应用程序发布到IIS上注意事项
    Dapper扩展
    C# 请求Https
    js 记录
  • 原文地址:https://www.cnblogs.com/fengmin/p/5015873.html
Copyright © 2011-2022 走看看