gpt4 book ai didi

ios - Objective-C:方法的返回值和Completion block ,它们是如何执行的?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:58:23 25 4
gpt4 key购买 nike

我在 iPhone 中制作了一个摄影应用程序,我有这 3 个类:ViewController、CaptureManager 和 ImgProcessor。

View Controller :

-(IBAction)takePic:(id)sender{
images = [captureManager takeMultipleImagesWithCompletion:^{

//Some UI related code..

[imgProcessor process:images];
}];
}

捕捉管理器:

-(NSArray *)takeMultipleImagesWithCompletion:^(void)completionHandler{

// take picture codes...

completionHandler();

return arrayOfImagesTaken;
}

到目前为止,它按预期工作:imgProcessor 处理由 captureManager 拍摄的图像。但我不太明白这是如何工作的。因为我在返回拍摄的图像数组之前调用了 completionHandler。这段代码是如何执行的?对此有更好的解决方案吗?

谢谢!

最佳答案

您不需要返回图像值。您可以将它作为 cmpletionHandler block 的参数传递。

-(void)takeMultipleImagesWithCompletion:(void (^)(NSArray *images))completionHnadler{

// take picture codes...
completionHnadler(arrayOfImagesTaken);
}

你可以这样调用它:

-(IBAction)takePic:(id)sender{
[captureManager takeMultipleImagesWithCompletion:^(NSArray *images){
[imgProcessor process:images];
}];
}

它是如何工作的?

这里的 block 用作回调,它定义了任务完成时要执行的代码。当 takeMultipleImagesWithCompletion 完成运行时, block completionHnadler 将被调用。

关于ios - Objective-C:方法的返回值和Completion block ,它们是如何执行的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21854497/

25 4 0