Назад к задачам
Junior — Senior
12

Определение оптимального места для запуска и остановки пользовательского видеоплеера

Компании, где спрашивали:

VKVK
Получайте помощь с лайвкодингом в реальном времени с Sobes Copilot
Условие задачи

В проекте есть собственный видеоплеер, реализованный в виде класса с методами play() и pause(). Необходимо решить, в какие методы жизненного цикла UIViewController следует вызывать эти методы, чтобы видео воспроизводилось корректно.

class CustomVideoPlayerView {
    func play() { /* ... */ }
    func pause() { /* ... */ }
}

class VideoContainerVC: UIViewController {
    // Без звука, зацикленное воспроизведение, ресурс берётся из bundle приложения
    var playerView: CustomVideoPlayerView // play / pause

    // Вариант 1
    func viewDidLoad() { /* play */ }
    deinit { /* pause */ }

    // Вариант 2
    func viewWillAppear(_ animated: Bool) { /* play */ }
    func viewDidDisappear(_ animated: Bool) { /* pause */ }

    // Вариант 3
    func viewDidAppear(_ animated: Bool) { /* play */ }
    func viewWillDisappear(_ animated: Bool) { /* pause */ }

    func buttonTapped() {
        // navigationController?.pushViewController(SecondVC(), animated: true)
    }
}

Вопрос: в каком из перечисленных методов жизненного цикла лучше инициировать воспроизведение (play) и где останавливать (pause) видеопоток? Обоснуйте выбор с учётом сценариев переходов между экранами и возможных утечек ресурсов.