Утечка памяти при добавлении подпредставления - PullRequest
0 голосов
/ 05 сентября 2018

При добавлении подпредставления контроллер представления, кажется, протекает.

Почему следующий текст печатает 'What'

import UIKit

final class ViewController: UIViewController {

    private lazy var mySwitch: UISwitch = {
        let mySwitch = UISwitch()
        mySwitch.tintColor = .blue
        return mySwitch
    }()

    func setup() {
        view.addSubview(mySwitch)
    }

    @objc func switchChangedState() {

    }

    deinit {
        print("what")
    }
}

var controller: ViewController? = ViewController()
controller = nil

Но следующее не

var controller: ViewController? = ViewController()
controller?.setup()
controller = nil

Редактировать : добавление GIF

enter image description here

Xcode Version 9.4.1 (9F2000)

Ответы [ 2 ]

0 голосов
/ 06 сентября 2018

В вашем коде нет ничего плохого. Здесь нет цикла сохранения.

Проблема, похоже, связана с игровой площадкой. Это может быть ошибка или игровая площадка по какой-то причине может удерживать ваш контроллер вида.

Если вы выполняете свой код в реальном проекте XCode (в симуляторе iOS или на устройстве), инициализатор выполняется в обоих случаях:

deinit executes in both cases

0 голосов
/ 05 сентября 2018

Ваш код хороший. controller?.setup() не приведет к утечке. Пожалуйста, убедитесь, что код в тестовом примере 2 действительно называется или нет. (Не называть, не «что» напечатано)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...