CADisplayLink из-за удаления (from: forMode :) не освобождает контроллер представления - PullRequest
0 голосов
/ 29 мая 2019

Я столкнулся с одной странной проблемой.

Итак, я создал экземпляр и разместил его, как показано ниже

var displayLink:CADisplayLink?

private func setupDisplayLink () {

    self.displayLink = CADisplayLink(target: self, selector: #selector(displayLinkDidFire(link:)))
    self.displayLink?.preferredFramesPerSecond = 30
    self.displayLink?.add(to: .main, forMode: .common)
}

Теперь, чтобы удалить отображаемую ссылку, которая у меня есть, из этого Ответ

self.displayLink?.remove(from: .main, forMode: .common) // comment this line and view controller correctly deallocated 
self.displayLink?.invalidate()

из-за того, что метод self.displayLink?.remove(from: .main, forMode: .common) my deinit не вызван из контроллера вида

В графе памяти я не могу определить реальную проблему.Мне повезло, что я попытался прокомментировать эту строку, и она работает

enter image description here

Почему это так?

1 Ответ

0 голосов
/ 29 мая 2019

Stop displayLink, как это:

displayLink?.invalidate()
displayLink = nil
...