Objective-C: Methode den Rückgabewert und den Abschluss-block, wie werden Sie ausgeführt?
Mache ich eine Foto-app im iPhone und ich habe diese 3 Klassen: ViewController, CaptureManager, und ImgProcessor.
ViewController:
-(IBAction)takePic:(id)sender{
images = [captureManager takeMultipleImagesWithCompletion:^{
//Some UI related code..
[imgProcessor process:images];
}];
}
CaptureManager:
-(NSArray *)takeMultipleImagesWithCompletion:^(void)completionHandler{
//take picture codes...
completionHandler();
return arrayOfImagesTaken;
}
So weit es funktioniert wie gewünscht: imgProcessor
Prozesse der Bilder genommen captureManager
. Aber ich weiß nicht so Recht die Ahnung, wie das funktioniert. Bcos ich rief completionHandler bevor ich zurück, das array von Bildern. Wie hat dieser code ausgeführt? Gibt es eine bessere Lösung?
Dank!
Du musst angemeldet sein, um einen Kommentar abzugeben.
Brauchen Sie nicht, um den Rückgabewert Bilder. Man kann Sie als argument für die cmpletionHandler block.
Können Sie es so nennen :
Wie es funktioniert ?
Hier der block wird als callback definiert, der code ausgeführt werden soll, wenn eine Aufgabe abgeschlossen ist. Wenn die takeMultipleImagesWithCompletion ist fertig ausgeführt, den block completionHnadler aufgerufen werden.
Seit Ihr
takeMultipleImagesWithCompletion
führt die Abschluss-block synchron, es nicht brauchen, um einen Abschluss zu blockieren. Es kann einfach nur wieder dasarrayOfImagesTaken
und der Anrufer kann tun, was er will, es.