У меня есть метод, который дает мне некоторые проблемы. Я пытаюсь выполнить два метода один за другим, но второй метод продолжает работу до того, как первый закончен. Я вполне уверен, что это связано с тем, что в первом методе есть блок, но поскольку я не очень хорошо их понимаю, я не смог его исправить или даже использовать другие ответы здесь. Любая помощь или совет будут действительно оценены!Пытается заставить метод ждать завершения другого метода
метод верхнего уровня:
- (IBAction)SendTextTapped:(id)sender{
NSLog(@"Entered tapped method");
[self setLocation];
NSLog(@"Supposedly past setLocation");
[self sendInAppSMS:globalLocation];
}
первый вспомогательный метод:
- (void)setLocation{
CLLocation *location = locationManager.location;
CLGeocoder *geocoder = [[CLGeocoder alloc] init];
CLLocation *newerLocation =[[CLLocation alloc]initWithLatitude:location.coordinate.latitude
longitude:location.coordinate.longitude];
NSLog(@"%f",location.coordinate.longitude);
[geocoder reverseGeocodeLocation:newerLocation completionHandler:^(NSArray *placemarks, NSError *error) {
if (error) {
NSLog(@"Geocode failed with error: %@", error);
return;
}
//NSLog(@"Entered geocoder");
if (placemarks && placemarks.count > 0) {
CLPlacemark *placemark = placemarks[0];
NSDictionary *addressDictionary =
placemark.addressDictionary;
NSLog(@"%@ ", addressDictionary);
NSString *address = [addressDictionary objectForKey:(NSString *)kABPersonAddressStreetKey];
globalLocation=[NSString stringWithFormat:@"pickup: %@, %@\n person: Joe Blow", address,placemark.subLocality];
NSLog(globalLocation);
dispatch_async(dispatch_get_main_queue(), ^{});
}
}];
}
второй вспомогательный метод:
-(void) sendInAppSMS:(NSString *)message
{
NSLog(@"Entered sendInAppSMS");
MFMessageComposeViewController *controller = [[MFMessageComposeViewController alloc] init];
if([MFMessageComposeViewController canSendText])
{
controller.body = message;
controller.recipients = [NSArray arrayWithObjects:@"123456", nil];
controller.messageComposeDelegate = self;
[self presentViewController:controller animated:YES completion:nil];
}
}
Это все работает хорошо, когда у меня есть весь код в одном метод, но для продолжения моего проекта мне нужно уметь отделять действия.
Спасибо за любую помощь, которую вы можете дать!
я просто попытался это, и она не работает, либо. Что-то странное передается сообщению в методе sendInAppSMS: <__ NSMallocBlock__: 0x2223a620> – mathewwl