From 7b5ee42294c9a332eb05352174beee3772be3b2e Mon Sep 17 00:00:00 2001 From: Rocking Daddy Date: Fri, 13 Apr 2018 16:35:54 +0800 Subject: [PATCH] Fix memory leak of CADisplayLink. --- CircleProgressView/CircleProgressView.swift | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/CircleProgressView/CircleProgressView.swift b/CircleProgressView/CircleProgressView.swift index dea85b7..95d7c8f 100644 --- a/CircleProgressView/CircleProgressView.swift +++ b/CircleProgressView/CircleProgressView.swift @@ -91,6 +91,22 @@ import UIKit self.addSubview(contentView) } + open override func willMove(toSuperview newSuperview: UIView?) { + if newSuperview == nil { + displayLink?.invalidate() + displayLink = nil + } + super.willMove(toSuperview: newSuperview) + } + + open override func willMove(toWindow newWindow: UIWindow?) { + if newWindow == nil { + displayLink?.invalidate() + displayLink = nil + } + super.willMove(toSuperview: newWindow) + } + @objc func internalInit() { let displayLink = CADisplayLink(target: self, selector: #selector(CircleProgressView.displayLinkTick)) displayLink.add(to: RunLoop.main, forMode: .defaultRunLoopMode)