You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Xcode 13中如何调用存在async重载的原有同步方法

解决方法

你遇到的报错是因为Xcode 13为AVAssetWriter的finishWriting()新增了async throws异步重载,Swift编译器默认会优先匹配适配当前上下文的方法版本,当你没有显式指定返回值时,编译器会错误匹配到异步版本,才触发了不支持并发的报错。

可行方案

  • 方案1:显式接收同步方法的返回值
    Xcode 13之前的原有同步finishWriting()方法自带Bool类型返回值,用来标识写入操作是否成功,你只需要显式声明接收该返回值,即可让编译器自动匹配到同步版本:
    // 显式接收Bool返回值,编译器会自动匹配同步方法
    let writeSuccess = writer.finishWriting()
    // 后续可按需处理writeSuccess对应的成功/失败逻辑
    
  • 方案2:显式指定方法签名(适用于极端匹配失效场景)
    如果显式接收返回值依然不生效,可以手动指定方法签名强制匹配同步版本:
    // 明确指定要调用返回Bool的同步方法签名
    let syncFinishMethod = AVAssetWriter.finishWriting as (AVAssetWriter) -> () -> Bool
    let writeSuccess = syncFinishMethod(writer)()
    

注意事项

同步版本的finishWriting()会阻塞当前调用线程,请勿在主线程调用该方法,避免出现UI卡顿问题。


内容的提问来源于stack exchange,提问作者fenrir_berk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 17:36:02