У меня есть 3 функции в моем коде. Код, который я сделал для управления очередью для выполнения функции.Как вызвать вторую функцию после завершения первой функции?
[self firstMethodWithOnComplete:^{
[self SecongMethodWithOnComplete:^{
dispatch_async(dispatch_get_main_queue(), ^{
[NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(CallThirdMethod) userInfo:nil repeats:NO];
});
}];
}];
Первый и Второй Функция
- (void)firstMethodWithOnComplete:(void (^)(void))onComplete {
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), ^{
//processing here.....
[self CallFirstMethod];
onComplete();
});
}
- (void)SecongMethodWithOnComplete:(void (^)(void))onComplete {
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), ^{
//processing here.....
[self CallSecondMethod];
onComplete();
});
}
Проблема в том, я не в состоянии управлять их выполнением. Я хочу, чтобы порядок выполнения был таким, чтобы вторая функция выполнялась только в том случае, если первая завершена, а третий выполняется, если второе исполнение завершено. Пожалуйста, помогите мне решить эту проблему или дать соответствующие предложения.
dispatch_async (dispatch_get_global_queue (DISPATCH_QUEUE_PRIORITY_DEFAULT, 0),^{ dispatch_async (dispatch_get_main_queue(),^{ NSLog (@ "DAIL изображения:% @", self.imageUrl); self.imgAppIcon.image = [UIImage imageWithData: [NSData dataWithContentsOfURL: [NSURL URLWithString: self.imageUrl]]]; }) ; }); – Birendra
вы можете попробовать вот так: – Birendra
Прочтите эту статью: http://stackoverflow.com/questions/7936570/objective-c-pass-block-as-parameter/27379471#27379471 Он показывает, как вызвать функцию (погрузка данные с веб-сайта), который затем вызывает вторую функцию после ее завершения. Он показывает, как передать функцию в качестве параметра. Это должно указывать на правильное направление. –