上线新项目前做内测的同学跟我说,使用内测机iPhone6 64GB手机反复打开带有Lottie动画的页面,app会闪退!!
WTF.png
联调测试也没有看奔溃断点,根据多年开车经验,应该是Memory Leak !!!
呵呵.png
果然是Lottie动画由于返回页面没有销毁造成了内存泄漏(Memory Leak)。
嘿嘿.jpeg
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 //内存释放
}
得瑟.png
End:做开发不能以实现功能为最终目的,而是需要在保证程序运行流畅的前提下尽可能的优化使用内存,我们要对内存泄漏、内存瞬时增幅过高、内存异常使用等这些问题着重检查及时处理,程序的健壮性稳定性是最重要的。加油老铁们!
加油老铁们.png
网友评论