4

如何在 Swift 中将实例AVPlayerItem与新实例重新关联?AVPlayer在初始化程序中使用时。每次我尝试将 an 重新分配AVPlayerItem给不同的对象时,AVPlayer即使我已经设置了对 to 的所有引用AVPlayernil因此它应该被垃圾收集),它抱怨 anAVPlayerItem不能分配给超过 1 个AVPlayer对象。我了解一些绕过它的方法,但我想知道为什么这种方法不起作用。

let player: AVPlayer = AVPlayer(playerItem: somePlayerItem)

我不知道在此声明期间会发生什么,但在某处设置了一些东西以允许 somePlayerItem 知道它有一个关联的播放器。这是否在某处设置了一些观察者或设置了会注意到这一点的属性?

有谁知道在原始的引用被破坏后将其重新分配AVPlayerItem给不同的方法?我知道我可以使用 URL 创建一个新对象,但我想知道我是否可以保留相同的对象。AVPlayerAVPlayerAVPlayerItem

4

1 回答 1

6

您不能重复使用项目,但可以重复使用资产。

所以创建一次你的资产:

let asset=AVAsset(URL: your_url)

然后在需要时通过创建一个新项目来重用它:

let item=AVPlayerItem(asset: asset)
let player=AVPlayer(playerItem: item)
于 2016-06-21T08:27:00.927 回答