Ios __块变量在方法调用时返回nil

Ios __块变量在方法调用时返回nil,ios,objective-c,function,objective-c-blocks,Ios,Objective C,Function,Objective C Blocks,我有一个方法,它具有块字符串变量,该变量被传递到块函数内检索API数据。 然而,它返回零。 调试时,addressPlace的值为零 - (NSString *)getAddressForPlaceAPI:(double)latitudePassed longitude:(double)longitudePassed { __block NSString * addressPlace = nil; NSString *url = @""; url = [NSStrin

我有一个方法,它具有块字符串变量,该变量被传递到块函数内检索API数据。 然而,它返回零。 调试时,addressPlace的值为零

 - (NSString *)getAddressForPlaceAPI:(double)latitudePassed longitude:(double)longitudePassed
 {
    __block NSString * addressPlace = nil;
    NSString *url = @"";
    url = [NSString stringWithFormat:@"%@lat=%@&lng=%@",kGeoCodeURL, [NSString    stringWithFormat:@"%f",latitudePassed],[NSString stringWithFormat:@"%f", longitudePassed]];
   [WebServiceObj callWebServiceGET_withAPIName:url withParam:nil withCompletion:^(BOOL isSuceess, NSDictionary *response)
   {
         if(isSuceess)
         {
                 addressPlace = [[response valueForKey:KEY_RESULTS][0] valueForKey:KEY_FORMATTEDADDRESS];
                 NSLog(@"ADDRESSPP*** = %@",addressPlace);

         }
         else
         {
             NSLog(@"FAIL API = %s","FAIL");
         }
 }];
return addressPlace;
 }
你知道为什么会这样吗?提前感谢。

原因是方法callWebServiceGET_和ApiName以异步方式工作。因此,在返回到完成处理程序之前,您的代码将到达函数末尾,如,并将addressPlace返回为nil


要解决这个问题,还应该在getAddressForPlaceAPI方法的参数中传递一个块。因此,每当成功块执行一次callWebServiceGET_with APINAME返回值时,您可以将该值返回到父块。

您能告诉我如何在方法中传递块吗?请看callWebServiceGET_with APINAME方法是如何实现的。您需要对您的方法执行相同的操作。