iOS内存问题分析

2020-03-30  本文已影响0人  michaelJackDong

内存方面常见问题:
1、UIGraphicsEndImageContext
UIGraphicsBeginImageContext和UIGraphicsEndImageContext必须成双出现,不然会造成context泄漏。另外XCode的Analyze也能扫出这类问题。
2、UIWebView
无论是打开网页,还是执行一段简单的js代码,UIWebView都会占用APP大量内存。而WKWebView不仅有出色的渲染性能,而且它有自己独立进程,一些网页相关的内存消耗移到自身进程里,最适合取替UIWebView。不过目前苹果已经强制iOS开发者使用WKWebView
3、autoreleasepool
通常autoreleased对象是在runloop结束时才释放。如果在循环里产生大量autoreleased对象,内存峰值会猛涨,甚至出现OOM。适当的添加autoreleasepool能及时释放内存,降低峰值。
4、互相引用
比较容易出现互相引用的地方是block里使用了self,而self又持有这个block,只能通过代码规范来避免。另外NSTimer的target、CAAnimation的delegate,是对Obj强引用。使用的时候要注意。
5、大图片处理
举个例子一般图片缩放接口是这样写的:

上一篇下一篇

猜你喜欢

热点阅读