无法弄清楚这个漏洞。 2个小时后,我求助于你。
当我回到我的桌面视图时,我一直在泄漏。我正在使用自定义tableview单元格。
from sklearn.datasets import make_moons
makemoons()
我在自定义单元格中确实有一个fillData方法,但是因为我认为我可能是原因而把它移出去了 - 事实并非如此。这是单元格
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath) as! ClientTableViewCell
var client = SharedData.sharedClientList[indexPath.row]
//cell.fillData(client)
cell.nameLabel.text = client.clientName
var tempNeeds = client.needsAsOneStringList()
var multipleWord = tempNeeds.removeAtIndex(0)
var others = " | ".join(tempNeeds)
cell.needLabel.text = "\(multipleWord) \(others)"
cell.foundAddressLabel.text = "Map Location: \(client.placemark.subThoroughfare) \(client.placemark.thoroughfare) \(client.placemark.locality) \(client.placemark.postalCode)"
cell.expectedAddressLabel.text = "Searched Location: \(client.importedAddress)"
cell.hidden = false
cell.accessoryType = .None
if !client.isBase {
if client.clientsBaseAssociation != nil {
cell.hidden = true
}
}
else {
cell.accessoryType = UITableViewCellAccessoryType.DisclosureIndicator
cell.expectedAddressLabel.text = ""
cell.foundAddressLabel.text = "\(client.placemark.subThoroughfare) \(client.placemark.thoroughfare) \(client.placemark.locality) \(client.placemark.postalCode)"
}
return cell
}
iOS 8.4 / Xcode 6.4
更接近问题
答案 0 :(得分:0)
显然(因为我没有文档来证明它)隐藏可重用的表格单元格(.hidden
继承自UIView
)泄漏内存。也许当隐藏时,它被认为不再可重复使用,而且也是非一次性的。在任何情况下,解决方案是停止使用该特定的细胞隐藏技术来管理表格视图,而是将未显示的单元格分组为“逻辑剪切”的部分。 - 也就是说,不再向dataSource
和delegate
协议方法透露。 (例如,为部分计数返回少一个,或者为"隐藏"部分返回零单元数。)
如果一个人愿意做reloadSection()
然后动态重新计算索引,那么逻辑剪辑也可以在一个部分内 单元格被遗漏但剩余的索引是连续的。根据底层模型的大小,可能需要使用Computer-Science-y来避免O(n ^ 2)重新索引算法。
在Code Review中遇到了Objective-C中的类似问题,但从未完全解释过:https://codereview.stackexchange.com/questions/42429/uitableview-hidden-section-causing-more-memory-allocations-every-time-on-pull