Как закрыть предыдущий AVPlayer и AVPlayerItem

Я делаю приложение для iOS в Swift, которое воспроизводит видео в виде цикла в небольшом слое в верхнем правом углу экрана, которое показывает видео определенного цветного элемента. пользователь затем нажимает соответствующий цветной элемент на экране. когда они это делают, переменная videoName случайным образом изменяется на следующий цвет, и запускается соответствующее видео. У меня нет проблем с поднятием, воспроизведением и зацикливанием видео с AVPlayer, AVPlayerItem, как видно из прилагаемого кода. Я застрял в том, что всякий раз, когда показывается следующее видео, предыдущие остаются открытыми. Кроме того, после воспроизведения 16 видео плеер полностью исчезает на моем iPad. Я перепробовал много предложений, представленных на этом и других сайтах, но Swift либо находит с ними проблему, либо просто не работает.Итак, вопрос: в моем коде здесь, как мне сказать: «эй, следующее видео начало воспроизводиться, удалить предыдущее видео и его слой и освободить память, чтобы я мог воспроизвести столько видео, сколько необходимо»?

//set variables for video play
var playerItem:AVPlayerItem?
var player:AVPlayer?

//variables that contain video file path, name and extension
var videoPath = NSBundle.mainBundle().resourcePath!
var videoName = "blue"
let videoExtension = ".mp4"

//DISPLAY VIDEO
func showVideo(){

        //Assign url path
        let url = NSURL(fileURLWithPath: videoPath+"/Base.lproj/"+videoName+videoExtension)
        playerItem = AVPlayerItem(URL: url)
        player=AVPlayer(playerItem: playerItem!)
        let playerLayer=AVPlayerLayer(player: player!)

        //setplayser location in uiview and show video
        playerLayer.frame=CGRectMake(700, 5, 350, 350)
        self.view.layer.addSublayer(playerLayer)
        player!.play()

     // Add notification to know when the video ends, then replay   it again.  THIS IS A CONTINUAL LOOP
     NSNotificationCenter.defaultCenter().addObserverForName(AVPlayerItemDidPlayToEndTimeNotification, object: player!.currentItem, queue: nil)
    { notification in
        let t1 = CMTimeMake(5, 100);
        self.player!.seekToTime(t1)
        self.player!.play()
    }

}

`

Ответы на вопрос(3)

Ваш ответ на вопрос