2016-07-29 4 views
1

Ich habe einen AVPlayer, den ich einem anderen AVPlayer zuweise, aber ich möchte, dass beide unabhängig voneinander sind. Zum Beispiel: Wenn ich ein AVPlayer wie folgt zu erstellen:wie man eine Variable einer anderen Variablen zuweist, ohne dass sie verwandt ist

var player1:AVPlayer = AVPlayer(URL: url) 

und dann erstelle ich einen anderen AVPlayer mit dem gleichen Video

var player2:AVPlayer = player1 

dann sagen, wenn ich genannt:

player2.play() 

wie zu tun Ich bekomme nur player2 zum spielen und nicht player1? (Hinweis: Ich möchte keinen brandneuen AVPlayer erstellen, indem ich ihn aus Gründen der Leistung, Geschwindigkeit und anderer Gründe mit der gleichen URL initialisiere) Jegliche Hilfe wäre willkommen :)

Antwort

1

Klassen werden kopiert Als Referenz wird struct nach Wert kopiert.

Da es sich bei der von Ihnen verwendeten Klasse um eine Drittpartei handelt, besteht die einzige Möglichkeit darin, eine weitere Instanz dieser Klasse zu erstellen.

So sollte der Code wie folgt aussehen:

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

Die beide Spieler voneinander unabhängig sind, aber gleiche URL haben.

HINWEIS: Sie müssen den Datentyp in diesem Fall nicht angeben, da er von dem Wert übernommen wird, den Sie ihm zuweisen. Es ist überflüssig, dies zu tun, und es ist besser, wenn Sie es nicht tun.

+0

Vielen Dank für Ihren Einblick –

0

landete ich eine Kopie der ersten player.currentItem machen und einen neuen AVPlayer mit dem Spieler Artikel Initialisierung:

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

es viel schneller in meinem Fall funktioniert, warum das gleiche Video von einer URL abrufen, wenn Sie bereits habe es!

Verwandte Themen