AFNetWorking同步請求

    dispatch_semaphore_t semaphore = dispatch_semaphore_create(0); //建立信號量
    AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
    manager.requestSerializer.timeoutInterval = 5;
    manager.completionQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
    //若是以前請求有值,則異步就好,否則會卡主線程
    if([OverallModel shareOverallModel].nSystemParameter){
        dispatch_semaphore_signal(semaphore);
    }
    [manager GET:[AppURLRequest getSystemVekey] parameters:nil progress:nil success:^(NSURLSessionDataTask * _Nonnull task, NSDictionary *responseObject) {
        
         dispatch_semaphore_signal(semaphore);//無論請求狀態是什麼,都得發送信號,不然會一直卡着進程
         NSInteger result = [[NSString stringWithFormat:@"%@",[responseObject objectForKey:@"result"]]integerValue];
        if(result == 1){
            NSString *nSystemParameter = NSZL(responseObject[@"data"][@"nSystemParameter"]);
            NSString *QQInfo = NSZL(responseObject[@"data"][@"QQInfo"]);
            [OverallModel shareOverallModel].nSystemParameter = nSystemParameter;
            [OverallModel shareOverallModel].QQInfo = QQInfo;
        }
    } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
        dispatch_semaphore_signal(semaphore);//無論請求狀態是什麼,都得發送信號,不然會一直卡着進程
    }];
    
    dispatch_semaphore_wait(semaphore,DISPATCH_TIME_FOREVER);  //等待

 若是是在異步線程請求,則去掉 manager.completionQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);異步

相關文章
相關標籤/搜索