【发布时间】:2017-11-25 07:14:57
【问题描述】:
由于客户的要求,我有一个基于立面的项目设计。我想知道哪种方法的内存消耗最少,哪种方法更好。
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 进行分析时仍然存在内存泄漏。
那么,在发生泄漏的情况下,哪种方法最好,哪种方法更安全?
【问题讨论】:
标签: ios swift memory-leaks automatic-ref-counting