如何将变量分配给另一个变量而不将它们相关联

时间:2016-07-29 14:57:49

标签: swift reference

我有一个AVPlayer,我正在分配给另一个AVPlayer,但我希望它们彼此独立。例如:如果我创建一个这样的AVPlayer:

var player1:AVPlayer = AVPlayer(URL: url)

然后我用相同的视频创建另一个AVPlayer

var player2:AVPlayer = player1

然后说如果我打电话:

player2.play()

如何才能让玩家2玩而不玩玩家1? (注意:出于性能,速度和其他原因,我不想通过使用相同的URL初始化来创建一个全新的AVPlayer。任何帮助将不胜感激:)

2 个答案:

答案 0 :(得分:1)

通过引用复制类,通过值复制struct。

由于您使用的课​​程是第三方,因此您唯一的选择是创建该课程的另一个实例。

所以你的代码应该是这样的:

var player1 = AVPlayer(URL: url)
var player2 = AVPlayer(URL: url)

两个玩家彼此独立,但网址相同。

注意:在这种情况下,您不需要指定数据类型,因为它是从您分配给它的值中假设的。这样做是多余的,如果你不这样做会更好。

答案 1 :(得分:0)

我最终制作了第一个player.currentItem的副本并使用播放器项初始化了一个新的AVPlayer:

let player1 = AVPlayer(URL: url)
someItem = player1.currentItem.copy()
let player2 = AVPlayer(playerItem: someItem)

在我的情况下它的工作速度要快得多,为什么如果你已经拥有它,可以从网址中检索相同的视频!