2017-03-05 56 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請求的響應的位置。