2016-07-29 62 views
1

我有一個AVPlayer,我將其分配給另一個AVPlayer,但我希望它們都是相互獨立的。例如:如果我創建一個這樣的AVPlayer:如何將一個變量分配給另一個變量,而不與它們相關

var player1:AVPlayer = AVPlayer(URL: url) 

,然後我創建另一個AVPlayer相同的視頻

var player2:AVPlayer = player1 

然後說,如果我叫:

player2.play() 

怎麼辦我只能玩player2而不玩player1? (注:我不想創建一個全新的AVPlayer,爲了性能,速度和其他原因,我使用相同的URL來初始化它)任何幫助將不勝感激:)

回答

1

複製類通過引用,struct被值複製。

由於您正在使用的類是第三方,因此您唯一的選擇是創建該類的另一個實例。

所以,你的代碼應該是這個樣子:

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

兩個球員都是相互獨立的,但有相同的URL。

注意:在這種情況下,您不需要指定數據類型,因爲它是根據您分配給它的值假定的。這樣做是多餘的,如果不這樣做會更好。

+0

感謝您的洞察力 –

0

我最終使第一player.currentItem的副本,並初始化與播放器項目的新AVPlayer:

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

它的工作原理非常快於我的話,爲什麼檢索一個URL同樣的視頻,如果你已經有它!

相關問題