我收到以下错误:

SearchStockCell retain]: message sent to deallocated instance 0x7f9fa1922c00

但是我很难跟踪该问题,因为每当我使用僵尸进行剖析时,它都会停止运行而不会发出任何警告或错误(2-3秒)。

ios - [SearchStockCell保留]:发送到已释放实例的消息-LMLPHP

我正在为该项目使用领域,数据解析是在后台执行的。不确定此信息是否相关。

还有其他追踪方式吗?还是我可以对表单元格使用弱?

更新了
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对象,如果是,请尝试将其用作弱对象。还要检查块内是否完成了其他操作。
  • 您正在使用KVO,请检查观察者在任何时间是否耗尽了内存。

  • 我能想到的最可能的问题是,在某些情况下,您分配/使用SearchStockCell对象为弱/强,由于ARC处理错误,导致保留计数错误。

    09-25 15:40