美文网首页
如何做内存优化?

如何做内存优化?

作者: 薐驚 | 来源:发表于2017-06-09 17:28 被阅读0次

为什么要做内存优化?内存优化从内存泄漏开始做起!

据我所知很多iOS开发者都不在意内存泄漏,为什么不在意?因为他们的项目还没有因为内存泄漏而出问题,所以他们往往不在意一点一滴的内存泄漏。等到项目做大了,内存泄漏越来越多了,因为内存泄漏而出现不可意料的问题或者内存警告,甚至APP闪退。这个时候他们就不得不去解决内存泄漏的问题了。有人会说:“那我就等到出现问题再去解决也不迟阿”,我说:“不好!”。为什么呢?因为浪费内存资源,增加CPU不必要的负担,等到那时候你才去解决整个项目的内存泄漏,那时候的内存泄漏的页面超乎你的想象,非常多,有些也不好找出来,这样会大大增加了开发成本。

所以我建议,从一开始做项目时导入检测内存泄露的第三方 pod 'MLeaksFinder',实时检测内存,以减少内存泄露带来的问题,也便于减轻以后检测内存的成本;                                  地址:http://wereadteam.github.io/2016/02/22/MLeaksFinder/

内存优化也是进阶必学!

会出现内存泄漏的情况有哪些?

1、block循环引用

2、代理不是weak修饰

3、定时器NSTimer没有销毁

解决方案:

           a. http://www.jianshu.com/p/a51c6dd12587?utm_campaign=hugo&utm_medium=reader_share&utm_content=note&utm_source=qq

           b.还有一种方案解决,下次补回代码

4、C语言的方法(凡是出现copy、create等,都需要release)

// CoreGraphics.framework

- (void)drawRect:(CGRect)rect {

//获得上下文

CGContextRefctx =UIGraphicsGetCurrentContext();

//拼接路径

//凡是带有create,copy单词的函数创建的对象,在使用完之后,要release

CGMutablePathRefpath  =CGPathCreateMutable();

CGPathAddEllipseInRect(path,NULL, rect);

CGContextAddPath(ctx, path);

//渲染

CGContextStrokePath(ctx);

//销毁路径

CGPathRelease(path);

}

5、MJRefresh 的block里面也会内存泄漏,用weakSlef 解决

好了,我要继续改bug了,很多东西在网上能找到,因为近期较忙就没有做太多解释了。技术点如有偏差,欢迎指出😀

相关文章

网友评论

      本文标题:如何做内存优化?

      本文链接:https://www.haomeiwen.com/subject/fonxqxtx.html