ich zwei Asynchron-Methoden haben:Mehrere Asynchron-Methoden, ein Abschluss-Handler
- (void)login: (void (^)(BOOL))completion{
// some network stuff with completion
}
und
- (void)download: (void (^)(BOOL))completion{
// some network stuff with completion
}
für einen Hintergrund holen, muss ich beide Verfahren abgeschlossen werden, und nur ein Abschluss zurück.
Ich könnte natürlich, nisten die Methoden, die als solche
- (void)login: (void (^)(BOOL))completion{
//....
[self download:^(BOOL success) {
//....
if (success){
completion(true);
}
}];
}
aber sobald ich hinzufügen eine oder mehrere Methoden, die zur gleichen Zeit abgeschlossen werden müssen, Code wird chaotisch.
Ich erinnere mich gelesen zu haben über einen Weg, mit dem Sie alle diese Methoden auf einen Thread gruppieren könnten, aber ich habe einfach nicht das richtige Vokabular, um das hier auf SO oder anderswo zu finden.
Ich hoffe, Sie verstehen, worüber ich spreche, und zeigen Sie mir in die richtige Richtung.
dank voraus
Denken Sie an dispatch_barrier_async? – onnoweb
Suchen Sie in Versandgruppen. Sie könnten diese Links nützlich finden: [1] (http://commandshift.co.uk/blog/2014/03/19/using-dispatch-groups-to-wait-for-multiple-web-services/) [2 ] (https://www.raywenderlich.com/63338/grand-central-dispatch-in-depth-part-2) – albertamg
würde ich gerne. Du hast mich in die richtige Richtung gelenkt, aber deine Antwort enthält diese Richtung nicht. Was für mich funktionierte, war: dispatch_group_t serviceGroup = dispatch_group_create(); dispatch_group_enter (serviceGroup); [asyncMethod:^(BOOL Erfolg) { if (Erfolg) { dispatch_group_leave (serviceGroup); } }]; – Sjakelien