gpt4 book ai didi

ios - libswiftCore.dylib 中的 UITableviewController 内存泄漏

转载 作者:行者123 更新时间:2023-11-30 14:09:47 24 4
gpt4 key购买 nike

无法找出此泄漏。 2 小时后,我求助于你。

当我回到桌面 View 时,我不断出现泄漏。我正在使用自定义表格 View 单元格。

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
}

我确实在自定义单元格中有一个 fillData 方法,但将其移出,因为我认为我可能是原因 - 但事实并非如此。这是单元格

import UIKit

class ClientTableViewCell: UITableViewCell {

@IBOutlet weak var nameLabel: UILabel!
@IBOutlet weak var needLabel: UILabel!
@IBOutlet weak var expectedAddressLabel: UILabel!
@IBOutlet weak var foundAddressLabel: UILabel!

override func awakeFromNib() {
super.awakeFromNib()
// Initialization code
}

override func setSelected(selected: Bool, animated: Bool) {
super.setSelected(selected, animated: animated)
}

}

iOS 8.4/Xcode 6.4

enter image description here

enter image description here

更接近问题

enter image description here

最佳答案

显然(因为我没有文档来证明这一点)隐藏可重用的表格单元格( .hidden 继承自 UIView )会泄漏内存。也许当它被隐藏时,它就被认为不再可重复使用,但也不是一次性的。无论如何,解决方案是停止使用特定的单元格隐藏技术来管理表格 View ,而是将未显示的单元格分组为“逻辑剪切”的部分,即不再向dataSource显示。和delegate协议(protocol)方法。 (例如,为部分计数减一,或为“隐藏”部分返回零单元格计数。)

如果愿意做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

关于ios - libswiftCore.dylib 中的 UITableviewController 内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31889086/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com