swift - addPeriodicTimeObserver 生成一个转义闭包错误

标签 swift macos closures avplayer swiftui

我正在关注这个 tutorial解释了如何创建 AVPlayer 并将其与 Swift UI 一起使用。我在搜索栏变成视频播放器进度条的部分。

因此,在该部分之后,我编写了教程中显示的代码,但在下面这行代码中,

player.addPeriodicTimeObserver(forInterval: CMTime(seconds: 0.5, preferredTimescale: 600), queue: nil) { time in
            guard let item = self.player.currentItem else{
                return
            }

            self.seekPos = time.seconds / item.duration.seconds
        }

time in 之前的括号带有红色下划线,我收到以下错误:

Escaping closure captures mutating 'self' parameter

有办法解决这个问题吗?我希望 slider 成为视频进度条。 addPeriodicTimeObserver 位于我的 struct 内的 init 中。

编辑:我使用的教程是针对 iOS 的,但我正在为 macOS 开发。我刚刚进行了更改,因此该教程中的代码适用于 macOS。

最佳答案

试试这个

player.addPeriodicTimeObserver(forInterval: CMTime(seconds: 0.5, preferredTimescale: 600), queue: nil) {[self] time in
    guard let item = self.player.currentItem else{
        return
    }

    self.seekPos = time.seconds / item.duration.seconds
}

希望能帮到你。

关于swift - addPeriodicTimeObserver 生成一个转义闭包错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56881562/

相关文章:

ios - Swift 中 UITextView 和 UITextField 的单一扩展

ios - 如何在 Swift 中更改 UIScrollView 的背景颜色?

css - 使用 LiveReload for OSX 编译 Sass 时得到不同的结果

c++ - fatal error comp.h 未找到 Netbean 8.0

macos - 如何从主机上的docker exec的pid检索docker容器名称(MacOS)

c# - 这段代码真的会导致 "access to modified closure"问题吗?

javascript - 谷歌闭包 : Passing 'this' into window. setInterval

ios - 在 swift ios 10 上使用 Facebook 登录时浏览器页面空白

ios - 我应该为我拥有的每个 XML 提要使用一个 XML 解析器,还是应该为我拥有的每个 XML 提要编写一个解析器?

javascript - JavaScript 中的闭包/回调函数有哪些用例?