2017-03-05 54 views
0

我创建了一个字符串,我已经用__block标识符作为前缀,这样我就可以在我的块之外访问该变量。然而,一旦我尝试运行应用程序中的变量返回“零”:块运行后__block变量返回nil

-(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请求的响应的位置。