上線新項目前做內(nèi)測的同學(xué)跟我說南誊,使用內(nèi)測機iPhone6 64GB手機反復(fù)打開帶有Lottie動畫的頁面了罪,app會閃退l摺利花!
聯(lián)調(diào)測試也沒有看奔潰斷點,根據(jù)多年開車經(jīng)驗载佳,應(yīng)該是Memory Leak 3词隆!蔫慧!
果然是Lottie動畫由于返回頁面沒有銷毀造成了內(nèi)存泄漏(Memory Leak)挠乳。
fileprivate var lottieLogoView: LOTAnimationView?
self.lottieLogoView = LOTAnimationView(name: "動效.json")
self.lottieLogoView?.frame = self.bounds
self.lottieLogoView?.autoresizingMask = [.flexibleHeight, .flexibleWidth]
self.lottieLogoView?.contentMode = .scaleAspectFill
self.lottieLogoView?.animationProgress = 0
self.lottieLogoView?.animationSpeed = 1.0
self.view.addSubview(self.lottieLogoView!)
//動效play
self.lottieLogoView?.play(completion: { [weak self] (isAnimationFinished) in
if (isAnimationFinished) {
self?.lottieLogoView?.pause()
}
})
public func removeLOTAnimationView() {
self.lottieLogoView?.removeFromSuperview()
self.lottieLogoView = nil //內(nèi)存釋放
}
End:做開發(fā)不能以實現(xiàn)功能為最終目的,而是需要在保證程序運行流暢的前提下盡可能的優(yōu)化使用內(nèi)存,我們要對內(nèi)存泄漏睡扬、內(nèi)存瞬時增幅過高盟蚣、內(nèi)存異常使用等這些問題著重檢查及時處理,程序的健壯性穩(wěn)定性是最重要的卖怜。加油老鐵們刁俭!