1、iOS的内存管理机制
Objective-C语言本身是支持垃圾回收机制的,但有平台局限性,仅限于Mac桌面系统开发中。
而在iPhone和iPad等苹果移动终端设备中是不支持垃圾回收机制的。在移动设备开发中的内存管理是采用MRC(Manual Reference Counting)以及iOS5以后的ARC(Automatic Reference Counting),本质都是RC引用计数,通过引用计数的方式来管理内存的分配与释放,从而防止内存泄漏。
同理Swift在iOS开发中 同样自动引用计数(ARC)机制来处理内存。
2、ARC是什么?
ARC(Automatic ReferenceCounting): 自动引用计数 。与iOS5一起发布,它避免了最常见的也就是经常是由于我们忘记释放内存所造成的内存泄露。它自动为你管理retain和release的过程,所以你就不必去手动干预了。忘掉代码段结尾的release简直像记得吃饭一样简单。而ARC会自动在底层为你做这些工作。除了帮你避免内存泄露,ARC还可以帮你提高性能,它能保证释放掉不再需要的对象的内存。
3、 什么是内存泄露? 有了ARC 就不会产生内存泄露了吗?
内存泄漏(Memory Leak):是指程序中己动态分配的堆内存由于某种原因程序未释放或无法释放。造成系统内存的浪费,导致程序运行速度减慢甚至系统崩溃等严重后果。
iOS提供了ARC功能,很大程度上简化了内存管理的代码。但使用ARC并不代表了不会发生内存泄露,使用不当照样会发生内存泄露。 例如 如循环引用,NSTimer 不销毁,通知不清除,动画不停止,手动开辟内存不释放等等。
4、内存问题主要有哪些?
内存问题主要包括两个部分,一个是iOS中使用不当导致的内存泄露,二是大量数据加载及使用导致的内存警告。
另外就是大量数据加载及使用导致的内存警告。
5、优化的方式有哪些?
修饰符关键字的错误使用循环应用计时器使用后不销毁通知没有及时清除动画不主动停止,且不清理动画资源手动开辟内存不释放使用了不合理的API网络下载的图片过大第三方库的缓存机制Masonry布局框架没必要常驻内存的对象,实现为常驻内存数据模型中冗余的字段forwardingTargetForSelector不能返回selfUIGraphicsBeginImageContext之后调用UIGraphicsEndImageContex
具体优化的实现和讲解 请关注下篇内容~~~~