当我转到另一个视图时,为什么不调用deinit?

时间:2019-08-17 20:15:18

标签: swift class memory-leaks

我在导航控制器中有一个供我的视图控制器使用的对象,当我回去时,它不会被初始化,我想知道为什么。

这是课程

class MyLeague {
    var league : League?
    var fixtures : [Fixture] = []
    var teams : [Team] = []
    var standings : [Standing] = []

    init() {
        print("Creating")
    }
    deinit {
        print("Deallocating")
    }
}

这是我在ViewController中创建它的方式

let selectedLeague = MyLeague()

这样我设置属性

    APIManager.shared.request(url: url, onSuccess: { [weak self] (data) in
        do {
            let fixtureData = try JSONDecoder().decode(FixturesResponse.self, from: data)
            self?.selectedLeague.fixtures = fixtureData.api.fixtures
            self?.competitionTableView.reloadData()
        } catch {
            print(error)
        }
    }) { (error) in
        print(error)
    }

1 个答案:

答案 0 :(得分:0)

尝试使用Instruments查找代码中的任何保留周期。

您可以从“产品”->“配置文件”中访问它,然后选择“分配”工具并使用它来跟踪在导航时哪个对象正在调用您的班级。希望对您有所帮助。