gpt4 book ai didi

ios - 异步 completionHandler 中的返回值

转载 作者:行者123 更新时间:2023-11-29 01:27:13 26 4
gpt4 key购买 nike

我有以下方法,如果 SessionStatus 完成,我想返回 movieDestinationUrl,但是我不断收到此错误 Unexpected non-void return value in void function。我做错了什么?

func createVideo() -> NSURL {

// create new file to receive data
let docsDir: AnyObject = documentsPath
let movieFilePath = docsDir.stringByAppendingPathComponent("result.mov")
let movieDestinationUrl = NSURL(fileURLWithPath: movieFilePath)
_ = try? NSFileManager().removeItemAtURL(movieDestinationUrl)

// use AVAssetExportSession to export video
let assetExport = AVAssetExportSession(asset: composition, presetName:AVAssetExportPresetHighestQuality)
assetExport!.outputFileType = AVFileTypeQuickTimeMovie
assetExport!.outputURL = movieDestinationUrl
assetExport?.videoComposition = layercomposition
assetExport!.exportAsynchronouslyWithCompletionHandler({
switch assetExport!.status{
case AVAssetExportSessionStatus.Failed:
print("failed \(assetExport!.error)")
case AVAssetExportSessionStatus.Cancelled:
print("cancelled \(assetExport!.error)")
default:
print("Movie complete")


// save to photoalbum
return movieDestinationUrl

}
})

}

最佳答案

同步:你需要一把锤子。你派人从你的工具箱里拿起锤子,带着它回来,然后把锤子递给你。与此同时,你正在等待那个人回来。很简单,效率很低,因为你把所有的时间都花在等待别人上。

异步:你需要一把锤子。你派人从你的工具箱里拿起锤子。但你不会等待锤子回来,因为你还有其他事情要做。当这个人带着锤子回来时,他们把它放在一个标有“把锤子放在这里!”的地方。然后在你的一叠纸条上写上“锤子准备好了”的字条。一旦你完成了你正在做的事情,你就会看到纸条,将其取出,然后拿起锤子。

这就是异步调用的工作原理。他们跑到最后,他们将结果存放在您可以找到它们的地方,并且通常会通过调用您提供给他们的代码块来通知您。 (这就是“completionHandler”)。

关于ios - 异步 completionHandler 中的返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33872997/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com