2017-03-05 5 views
0

ブロックの外でその変数にアクセスできるように、__block識別子を前に付けた文字列を作成しました。私は、変数を返す「nil」のアプリケーションを実行しようとただしたら:なぜこれが起こってすることができる上ブロック実行後に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要求への応答を処理するコードを置く場所です。

関連する問題