我想为两个字符串分配一个值,然后在块外使用它们,或者在另一个类中将其用作属性。但是我得到Null作为回报。

这是代码:

__block NSString* citySTR = nil;
__block NSString* countrySTR = nil;

[geocoder reverseGeocodeLocation:locationManager.location completionHandler:
 ^(NSArray* placemarks, NSError* error){
     if ([placemarks count] > 0)
     {
         citySTR = [[placemarks objectAtIndex:0] administrativeArea];
         countrySTR = [[placemarks objectAtIndex:0] country];
     }
 }];


当我NSLog街区之外的citySTR和countrySTR时,我得到Null

最佳答案

之后您要如何处理这些值?
如果要设置标签或调用其他类方法,则可以在块内进行操作。
另一个解决方案是进行委派/添加观察者:

 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(somethingHappens:) name:@"notificationName" object:nil]; - this one suppose to listen do the event (called at the initialisation)


而这个调用它:

 [[NSNotificationCenter defaultCenter] postNotificationName:@"notificationName" object:obj];


您可以将citySTR和countrySTR作为属性-也许可以帮助您

关于ios - 如何访问已在块内分配的对象?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24244608/

10-12 02:05