Ich habe 3 Funktionen in meinem Code. Der Code, den ich für die Verwaltung der Warteschlange für die Ausführung der Funktion getan habe.Wie wird die zweite Funktion aufgerufen, nachdem die erste Funktion ausgeführt wurde?
[self firstMethodWithOnComplete:^{
[self SecongMethodWithOnComplete:^{
dispatch_async(dispatch_get_main_queue(), ^{
[NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(CallThirdMethod) userInfo:nil repeats:NO];
});
}];
}];
erste und die zweite Funktion
- (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();
});
}
Das Problem ist, vermag ich nicht ihre Ausführung zu verwalten. Ich möchte die Ausführungsreihenfolge so, dass die zweite Funktion nur dann ausgeführt wird, wenn die erste beendet ist und die dritte, wenn die zweite ausgeführt wird. Bitte helfen Sie mir, dies zu lösen oder geben Sie geeignete Vorschläge.
dispatch_async verwendet haben (dispatch_get_global_queue (DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)^{ dispatch_async (dispatch_get_main_queue()^{ NSLog (@ "dail Bild:% @", self.imageUrl); self.imgAppIcon.image = [UIImage imageWithData: [NSData dataWithContentsOfURL: [NSURL URLWithString: self.imageUrl]]]; }) ; }); – Birendra
können Sie so versuchen – Birendra
Lesen Sie diesen Artikel: http://stackoverflow.com/questions/7936570/objective-c-pass-block-as-parameter/27379471#27379471 Es zeigt, wie Sie eine Funktion aufrufen (Laden Daten von einer Website), die nach dem Beenden eine zweite Funktion aufruft. Es zeigt, wie eine Funktion als Parameter übergeben wird. Dies sollte Sie in die richtige Richtung weisen. –