График памяти xcode не показывает цикл сохранения - PullRequest
1 голос
/ 10 марта 2020

Мой быстрый код указан ниже. Я использовал self в замыкании, но когда я запускаю проект, график памяти не показывает цикл сохранения. Я ошибаюсь насчет цикла сохранения?

class ViewController: UIViewController {

    private var counter = 0

    private var closure : (() -> ()) = { }

    func foo() {
        closure()
    }

    override func viewDidLoad() {
        super.viewDidLoad()

        closure = {
            self.counter += 1
            print(self.counter)
        }
    }

}

1 Ответ

1 голос
/ 10 марта 2020

Да, XCode не всегда визуально представляет цикл сильных ссылок. Но это непротиворечиво показывает, что рассматриваемый объект еще не был освобожден.

Например, если я пу sh через контроллер навигации и поп, я вижу ViewController в списке живых объекты, но когда я выбираю его, не вижу никакого цикла, а скорее вижу некоторый график crypti c, включая контроллер навигации (даже если я его отключил):

enter image description here

С учетом сказанного я нахожу, что, если я представлю модально и отклоню соответствующий контроллер представления, я увижу цикл более четко:

enter image description here

Было бы хорошо, если бы мы могли видеть прототипный цикл (как показано ниже), но картина не всегда так проста при работе с объектами UIKit.

enter image description here

...