何らかの理由で、括弧内にログインすると郵便番号が取得されますが、括弧外にログインしようとすると (null) が取得されます。また、ヘッダー ファイル内で「zip」を宣言しました。これは簡単なことではないと確信しています。少しの援助?
locationManager = [[CLLocationManager alloc] init];
locationManager.distanceFilter = kCLDistanceFilterNone;
locationManager.desiredAccuracy = kCLLocationAccuracyHundredMeters;
[locationManager startUpdatingLocation];
CLGeocoder *fgeo = [[CLGeocoder alloc] init];
[fgeo reverseGeocodeLocation:locationManager.location completionHandler:^(NSArray *placemarks, NSError *error) {
if (!error) {
CLPlacemark *placemark = [placemarks objectAtIndex:0];
self.zip = placemark.postalCode;
**NSLog(@"%@", _zip);**
}
}];
**NSLog(@"%@",self.zip);**
問題解決編集:
SIMON のおかげで、ブロックを次のメソッドに渡すことができたので、OK です。
CLGeocoder *fgeo = [[CLGeocoder alloc] init];
[fgeo reverseGeocodeLocation:locationManager.location completionHandler:^(NSArray *placemarks, NSError *error) {
if (!error) {
CLPlacemark *placemark = [placemarks objectAtIndex:0];
self.zip = placemark.postalCode;
**NSLog(@"%@", _zip);**
[self someMethod];
同じブロックを何度も呼び出すことになることがわかりました。したがって、次のコードを使用して、コードがループしてアプリがクラッシュするのを防ぐことができたので、ブロックを次のようにラップしました。
static dispatch_once_t once;
これで私のコードをラップしました:
dispatch_once(&once,^{
});
それは問題を正しく修正しました!みんな、ありがとう!