在iOS AVPlayer中,addPeriodicTimeObserverForInterval似乎丢失了

2024-03-28

我正在尝试设置AVPlayer.addPeriodicTimeObserverForInterval()。有人用过这个成功吗?

我正在使用 Xcode 8.1、Swift 3


接受的答案让人感觉您可以将返回值分配给局部变量并忽略它。但根据doc https://developer.apple.com/documentation/avfoundation/avplayer/1385829-addperiodictimeobserver,保持对返回值的强引用实际上很重要,removeTimeObserver(_ :).

只要您希望玩家调用时间观察器,您就必须维护返回值的强引用。此方法的每次调用都应与相应的调用配对 删除时间观察者(:) 。释放观察者对象而不调用 删除时间观察者(:) 将导致未定义的行为。

所以我会这样做:

if let ob = self.observer {
    player.removeTimeObserver(ob)
}

let interval = CMTimeMake(1, 4) // 0.25 (1/4) seconds
self.observer = player.addPeriodicTimeObserver(forInterval: interval, queue: DispatchQueue.main) { [weak self] time in
    ...
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在iOS AVPlayer中,addPeriodicTimeObserverForInterval似乎丢失了 的相关文章

随机推荐

  • Pygame-旋转精灵并同时跟随路径

    我正在尝试制作一个被抛出的球的动画 我希望它旋转并同时遵循平滑的抛物线路径 然而 我似乎无法得到pygame transform rotate 要合作 到目前为止 这是我尝试过的 import pygame screen pygame di
  • MySQLi 更新准备好的语句不更新数据库

    所以我有这个更新语句 当我转储 POST 变量时 我得到了我想要的输出 stmt dbConnectionW gt prepare UPDATE members SET fname mysqli real escape string dbC
  • 如何在 VS Code 中从命令行打开远程文件夹?

    我可以使用以下命令启动 VS Code 打开本地文件夹code path to folder 是否可以通过在命令行上指定计算机和文件夹来打开远程计算机上的文件夹 通过远程 SSH 扩展 从 Linux 或 Mac 终端上的 cli code
  • 在构建时从 Gradle 设置静态变量

    我有一个 Android 项目 在 git 下管理 Git 有 2 个分支 还有更多 但重要的是那两个 branch a 和branch b 是否可以设置 gradle 来确定项目是从哪个分支构建的并设置public static Stri
  • 如何在 Mercurial 中克隆存储库的子文件夹?

    我有一个 Mercurial 存储库 其中包含一些相关项目 我只想将其中一个项目分支到其他地方进行 是否可以克隆存储库的一部分 这是实现这一目标的正确方法吗 你想要的是一个narrow or partial clone https www
  • 不使用 Math.min 查找数组中的最小值

    如何在不使用的情况下找到数组中的最小数字Math min apply var arr 5 1 9 5 7 const smallest Math min 5 1 9 5 7 console log smallest old way cons
  • 使用应用程序脚本在新的 Google 表格中插入超链接

    在当前版本的 Google Sheet 中 要将超链接插入到单元格中 您可以执行以下操作 sheet getRange row selectedColumn setValue hyperlink ontologyObject accessi
  • RX 自动完成框

    我正在尝试使用 RX 和 WPF 构建过滤器控件 所以我有一个文本框和一个列表框 启动时 列表框有 100 个联系人姓名 用户可以输入姓名来过滤列表 问题是我如何构建文本流 关键输入 然后发布 这应该是时间敏感的 所以我想只有在 750 毫
  • Flask:蓝图中的模板继承自应用程序中的模板?

    我是 Flask Jinja2 的新手 所以也许我忽略了一些明显的事情 但是 Flask 不应该开箱即用地允许蓝图中存在的模板吗 templates 文件夹来扩展由我的应用程序定义的基本模板templates 文件夹 即使蓝图还包含一个 默
  • 如何编写查询以确保电子邮件包含@

    我正在 db2 中创建一个数据库 我想添加一个约束来验证用户是否插入包含 的有效电子邮件地址 没有运气 有什么建议吗 您可以将 LIKE 与通配符一起使用 看here http publib boulder ibm com infocent
  • ASP.NET MVC3 TryValidateModel 验证整个模型集合,而不仅仅是单个实例

    我有一个需要模型列表的操作 我想同时验证每个模型与整个模型集合 我正在尝试使用 TryValidateModel 但似乎如果我的任何一个模型无效 那么所有模型都无效 我的表单显示 5 个 SurveyResponseModel 一个包含两个
  • 本机 KDE 查找 Qt 5 应用程序

    我在 Kubuntu 12 10 Linux 机器上安装了 Qt5 和 Qt4 并注意到以下内容 使用 Qt4 编译的程序具有原生 KDE 外观和感觉 我使用默认的 KDEOxygen主题 我的程序也是如此 注意带有标题的平滑渐变和聚焦小部
  • C#:有什么方法可以发现文件使用的字符集编码吗?

    有什么方法可以发现文件使用的字符集编码吗 可靠地做到这一点的唯一方法是寻找字节顺序标记 http en wikipedia org wiki Byte order mark在文本文件的开头 此 blob 更一般地表示所使用的字符编码的字节顺
  • 实现3d索贝尔算子

    我目前正在研究从包含体素的 MRI 数据量中去除不均匀性 我想在这些体积上应用索贝尔运算符来找到梯度 我熟悉二维索贝尔掩模和二维图像的邻域 索贝尔面具 1 2 1 0 0 0 1 2 1 1 0 1 2 0 2 1 0 1 x y 的邻域
  • Websocket 标头丢失

    我正在 Rails 3 2 13 中使用 faye gem 在开发过程中 我在 localhost 9292 上运行 faye 在 localhost 3000 上运行我的应用程序 我可以使用命令行中的curl 请求激活弹出窗口 但无法从应
  • 未找到 React 应用程序的 GitHub Pages 页面

    我正在尝试将我的单页网站发布到 github 页面 但遇到了问题 当我转到网站链接时 出现 404 错误并显示以下消息 找不到文件 此地址配置的站点不包含请求的文件 如果这是您的站点 请确保文件名大小写正确匹配 URL 对于根 URL 例如
  • 如何显示wordpress中的所有类别?

    我使用了这段代码 categories wp get post categories get the ID foreach categories as category echo div class col md 4 a href get
  • python topN 最大堆,使用 heapq 还是自己实现?

    python中有heapq 用于一般用途 我想记录topN 0 20 10e7 条记录 如果使用heapq 应该使用 将最大值转换为最小值 并记录底部的最小数量 以调用 heapq heappushpop 我应该使用 heapq 还是自行实
  • Recyclerview:监听padding点击事件

    我有一个水平的RecyclerView with leftPadding 48dp topPadding 24dp and clipToPadding false 它从左侧的空白空间开始 但是当用户滚动列表时 其项目将绘制在该 以前是空的
  • 在iOS AVPlayer中,addPeriodicTimeObserverForInterval似乎丢失了

    我正在尝试设置AVPlayer addPeriodicTimeObserverForInterval 有人用过这个成功吗 我正在使用 Xcode 8 1 Swift 3 接受的答案让人感觉您可以将返回值分配给局部变量并忽略它 但根据doc