Xcode仪器无泄漏呼叫

Xcode仪器无泄漏呼叫,xcode,memory-leaks,free,instruments,Xcode,Memory Leaks,Free,Instruments,我经常使用Xcode instruments(8.2)查找“泄漏”,其中free是对对象/内存的最后一次调用。如果成功调用了free,那么为什么仪器会将此报告为泄漏?这真的是仪器的泄漏还是故障 这里有一个例子 例如,这一小段代码似乎会导致仪器报告如下泄漏 class RDTranslateComponentView: RDMessageCellComponentView { let textView: RDTextMessageCellComponentView let

我经常使用Xcode instruments(8.2)查找“泄漏”,其中
free
是对对象/内存的最后一次调用。如果成功调用了
free
,那么为什么仪器会将此报告为泄漏?这真的是仪器的泄漏还是故障

这里有一个例子

例如,这一小段代码似乎会导致仪器报告如下泄漏

class RDTranslateComponentView: RDMessageCellComponentView {

    let textView: RDTextMessageCellComponentView
    let button: UIButton

    convenience init() {
        self.init(frame: CGRect.zero)
    }

    override init(frame: CGRect) {
        self.textView = RDTextMessageCellComponentView()
        self.button = UIButton(type: .custom)

        super.init(frame: frame)

        self.setupView()
    }

    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }

    private func setupView() {
        self.textView.label.font = UIFont.proximaSemiBold(withSize: 14)
        self.textView.label.textColor = UIColor.remindBrand()
        self.textView.bubble.backgroundColor = UIColor.white

        self.addSubviews([ self.textView, self.button ])

        self.button.addTarget(self, action: #selector(pressedButton(_:)), for: .touchUpInside)
    }

    @objc private func pressedButton(_ sender: UIButton?) {
        /// Code that calls into a delegate
    }

    override func sizeThatFits(_ size: CGSize) -> CGSize {
        return self.textView.sizeThatFits(size)
    }

    override func layoutSubviews() {
        super.layoutSubviews()

        self.textView.frame = self.bounds
        self.button.frame = self.bounds
    }
}

class RDMessageCellComponentView: UIView {
    /// The inside of this is just a bag of constants. Doesn't even touch anything View related so I'm omitting.
}
这是从我的代码到泄漏的堆栈跟踪。记住,这不是唯一发生这种情况的地方。但是,这种情况经常出现,并且似乎是在子视图的
init
方法中实例化了
UILabel
的代码所独有的,该子视图作为子视图添加到另一个视图中


应用程序非常复杂,堆栈跟踪非常深入,但在swift中初始化子视图的子视图中的UILabel时,似乎只会出现这种情况。我发现了另一张照片,上面有代码初始化位置的堆栈跟踪,我将随代码一起发布。请记住,在应用程序中的其他位置也会发生这种情况,堆栈跟踪略有不同。我会看看我能否复制一个小规模的测试。它也没有出现在内存图调试器中,这就是为什么我很好奇这是否只是仪器中的一个错误,它是如何计算泄漏的。@matt Ok,添加了一些代码。不确定这是否会引发我的应用程序范围之外的相同问题,将需要更深入地梳理出最低要求。你以前见过这样的东西吗?其中调用了
free
,但它注册为泄漏?这是什么语言?Objective-C?应用程序非常复杂,堆栈跟踪非常深入,但在swift中初始化子视图的子视图中的UILabel时,似乎只会出现这种情况。我发现了另一张照片,上面有代码初始化位置的堆栈跟踪,我将随代码一起发布。请记住,在应用程序中的其他位置也会发生这种情况,堆栈跟踪略有不同。我会看看我能否复制一个小规模的测试。它也没有出现在内存图调试器中,这就是为什么我很好奇这是否只是仪器中的一个错误,它是如何计算泄漏的。@matt Ok,添加了一些代码。不确定这是否会引发我的应用程序范围之外的相同问题,将需要更深入地梳理出最低要求。你以前见过这样的东西吗?其中调用了
free
,但它注册为泄漏?这是什么语言?目标C?