由於客戶的要求,我有一個基於外觀的項目設計。我想知道哪種方法具有最少的內存消耗,哪種方法更好。快速關閉和內存泄漏
class ModFirst: NSObject {
func getCells(tableView: UITableView, rtn: @escaping ([Any]?) -> Void) {
print("ModFirst- getCells")
TableCellFirst().cells(tableView: tableView, rtn: { (cells) in
rtn(cells)
})
}
}
class ModThird: NSObject {
lazy var tableCellThird: TableCellThird? = TableCellThird()
func getCellsNew(rtn: @escaping ([Any]?) -> Void) {
print("ModThird - getCellsNew")
self.tableCellThird?.cellsNew(rtn: { (cells) in
rtn(cells)
})
}
deinit {
print("deinit - ModThird")
self. tableCellThird = nil
}
}
以上是兩種不同的實現方式。第一種方法立即分配TableCellFirst對象並調用getCells方法。這個實現沒有任何內存泄漏。但第二個實現使用惰性變量和deinit,但在使用Instruments進行性能分析時仍然存在內存泄漏。
那麼哪種方法是最好的方法,哪種方法在泄漏時更安全?
看到這一點:https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/AutomaticReferenceCounting.html#//apple_ref/doc/uid/TP40014097-CH20-ID48 – KKRocks