メインスレッドで実行されていると思われる次の関数があります(ボタンのクリックに割り当てられたイベントです)
-(void)startTracking:(CLLocation*) targetLocation
{
NSLog(@"Target location: %@", targetLocation);
self.locationManager = [[CLLocationManager alloc]init];
[self.locationManager setDelegate:self];
self.locationManager.desiredAccuracy = kCLLocationAccuracyHundredMeters;
self.targetRegion = [[CLRegion alloc] initCircularRegionWithCenter:targetLocation.coordinate radius:10 identifier:@"Destination Region"];
[self.locationManager startMonitoringForRegion:self.targetRegion];
//[self.locationManager startUpdatingLocation];
NSLog(@"Target region: %@", self.targetRegion);
}
私が「私が思う」と言う唯一の理由は、これを実行する前に、別のスレッドで実行されるブロックでtargetRegionの詳細を取得することです。
[geocoder geocodeAddressString:self.address completionHandler:^(NSArray* placemarks, NSError* error){
for (CLPlacemark* aPlacemark in placemarks)
{ // Process the placemark.
NSLog(@"Got Placemark : %@", aPlacemark);
//newDestination.destination = aPlacemark.location;
}
//self.Destination.destination = [[placemarks objectAtIndex:0] location];
self.targetLocation = [[placemarks objectAtIndex:0] location];
self.startTrackingButton.enabled = true;
self.stopTrackingButton.enabled = true;
}];
これが代理人が呼ばれない理由ですか...?