我收到以下错误:
SearchStockCell retain]: message sent to deallocated instance 0x7f9fa1922c00
但是我很难跟踪该问题,因为每当我使用僵尸进行剖析时,它都会停止运行而不会发出任何警告或错误(2-3秒)。
我正在为该项目使用领域,数据解析是在后台执行的。不确定此信息是否相关。
还有其他追踪方式吗?还是我可以对表单元格使用弱?
更新了
class SearchStockCell: SSBaseTableCell {
@IBOutlet var symbolLabel: UILabel!
@IBOutlet var marketLabel: UILabel!
@IBOutlet var priceLabel: UILabel!
var stock: StockInfo? {
willSet{ "About to step to \(newValue)"
if let aStock = newValue {
// add KVO on newValue
aStock.addObserver(self,
forKeyPath: "price",
options: NSKeyValueObservingOptions.New,
context: nil)
aStock.addObserver(self,
forKeyPath: "change",
options: NSKeyValueObservingOptions.New,
context: nil)
}
}
didSet { "Just stepped from \(oldValue)"
if let aStock = oldValue {
// remove KVO on old value
aStock.removeObserver(self, forKeyPath: "price")
}
if let aStock = oldValue {
// remove KVO on old value
aStock.removeObserver(self, forKeyPath: "change")
}
self.configureCell()
}
}
override func observeValueForKeyPath(keyPath: String?, ofObject object: AnyObject?, change: [String : AnyObject]?, context: UnsafeMutablePointer<Void>) {
if keyPath == "price" {
self.updatePrice()
}
if keyPath == "change" {
self.updateChange()
}
}
....
...
..
。
这是SearchStockCell中发生的代码。
我将触发一个API以更新我的可见单元格(它将更新我的领域),稍后它将提示KVO在SearchStockCell上进行更改。请注意,我无法真正重新加载表,因为我需要保持tableview的位置并且其中有成千上万的数据行。
最佳答案
从代码中很难猜测,但是会尽力寻找答案
请找地方
如果是,
SearchStockCell
用作属性,如果可以,请检查属性是否强。彼此可能存在一个循环。 SearchStockCell
对象,如果是,请尝试将其用作弱对象。还要检查块内是否完成了其他操作。 我能想到的最可能的问题是,在某些情况下,您分配/使用
SearchStockCell
对象为弱/强,由于ARC处理错误,导致保留计数错误。