ios - [SearchStockCell 保留] : message sent to deallocated instance

标签 ios swift background realm retain-cycle

我收到以下错误:

SearchStockCell retain]: message sent to deallocated instance 0x7f9fa1922c00

但我很难追踪这个问题,因为每当我对僵尸进行分析时,它都会在没有任何警告或错误的情况下停止(2-3 秒)。

enter image description here

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

还有其他方法可以追踪吗?或者我可以对 tableview 单元格使用 weak 吗?

已更新

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 来更新我的可见单元格(它将更新我的 Realm ),稍后将通过 KVO 提示对 SearchStockCell 的更改。请注意,我不能真正重新加载表格,因为我需要保持表格 View 的位置并且其中有数千行数据。

最佳答案

很难从代码中猜测,但我会尽力寻找答案 请找地方

  • 已将 SearchStockCell 用作某处的属性,如果是,请检查属性强/弱。存在相互牵制的可能循环。
  • 检查您是否在 block 中使用 SearchStockCell 对象,如果是,请尝试将其用作弱对象。还要检查 block 内完成的其他事情。
  • 你正在使用 KVO,检查观察者是否在任何时间点内存不足。

我能想到的最有可能的问题是在某个地方你将 SearchStockCell 对象分配/使用为弱/强,因为 ARC 错误地处理了保留计数。

关于ios - [SearchStockCell 保留] : message sent to deallocated instance,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35548916/

相关文章:

css - 文本后面的背景图像

安卓编程 : Background color not fully covering fragments

ios - 后台应用程序可以通过耳机插孔传输信息吗?

html - iOS 邮件中的表格文本在单元格外运行

ios - 如何在 iOS 中更新 XLPagerTabStrip 的指标信息?

ios - 为什么在解除警报后重置@state

swift - Swift 中的通用类型作为返回值

ios - 这是对属性使用 self 属性的正确方法吗?

ios - CloudKit CKError "Invalid Arguments"与 "Bad sync continuation data"

ios - groupTableViewBackgroundColor 在 iOS 6 上被弃用了吗?