2017-03-05 3 views
0

내 블록 외부에서 해당 변수에 액세스 할 수 있도록 __block 식별자가 접두사로 포함 된 문자열이 생성되었습니다. 나는 변수 반환 '전무'응용 프로그램을 실행하려고하지만 일단 왜 이런 일이 될 수 있습니다에블록 실행 후 nil을 반환하는 __block 변수

-(void)downloadParcelData { 
    __block NSString *test; 

    MKMapRect mRect = self.mapView.visibleMapRect; 
    NSArray *array = [NSArray array]; 
    array = [self getBoundingBox:mRect]; 

    NSString *polygonString = [self convertCoordinates:array]; 
    AFHTTPSessionManager *manager = [AFHTTPSessionManager manager]; 
    manager.responseSerializer.acceptableContentTypes = nil; 

    NSDictionary *parameters = @{@"client" : @"xxxxxxxxxx", 
          @"spatial_intersect" : [NSString stringWithFormat:@"POLYGON((%@))", [polygonString stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLHostAllowedCharacterSet]]]}; 

    [manager GET:@"someURL" parameters:parameters progress:nil success:^(NSURLSessionTask *task, id responseObject) { 
     NSLog(@"JSON: %@", responseObject); 
     test = responseObject[@"txn_id"]; 
    } failure:^(NSURLSessionTask *operation, NSError *error) { 
     NSLog(@"Error: %@", error); 
    }]; 

    [self fetchParcelData:test]; 

}

어떤 아이디어? 미리 감사드립니다.

답변

3

[manager GET:parameters:progress:success:failure]은 비동기 방법 인 것처럼 보입니다. 그 선은 차단되지 않습니다. 즉시 실행은 [self fetchParcelData:]으로 계속됩니다. 성공 블록은 GET 요청에 대한 응답을 처리 할 코드를 넣어야하는 곳입니다.