iOS性能优化-内存优化(1)

iOS开发相关 同时被 2 个专栏收录
19 篇文章 0 订阅
25 篇文章 0 订阅

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不能返回self
  • UIGraphicsBeginImageContext之后调用UIGraphicsEndImageContex

 

具体优化的实现和讲解 请关注下篇内容~~~~

  • 1
    点赞
  • 0
    评论
  • 1
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值