iOS 内存管理

1、只有OC对象才需要进行内存管理

    1、OC对象存在堆中

    2、非OC对象存在栈中(内存会被系统自动收回)

2、堆和栈

    1、栈:有操作系统自动进行释放和分配,其操作方式类似于数据结构中的栈(先进后出)

    2、堆:一般有程序员手动分配释放,若不释放,程序结束时可能由操作系统收回,分配方式类似链表

3、引用计数

    任何一个对象,刚产生时,引用计数都是为1(当使用alloc、new、copy创建一个对象时,对象的引用计数器默认就是1)

    1、retain方法 引用计数+1

    2、release方法 引用计数-1

    3、retaincount消息,获得对象当前的引用计数值

    也就是说一次(alloc new copy)对应一次release,一次retain对应一个release

4、dealloc方法

    当一个对象的引用计数为0时,该对象即将被销毁,占用的系统内存将被收回

    对象即将被销毁是,系统会调用dealloc方法,重写dealloc方法时必须在最后调用【super dealloc】方法

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Copyright © 2017年ZaneWangWang. All rights reserved. 如果你看到...
    2897275c8a00阅读 932评论 0 1
  • 1. 内总管理原则(引用计数) IOS的对象都继承于NSObject, 该对象有一个方法:retainCount...
    lilinjianshu阅读 2,184评论 0 2
  • 什么是内存管理 移动设备的内存极其有限,每个App所能占用的内存是有限制的。当App所占用的内存较多时,系统会发出...
    小小土豆dev阅读 216评论 0 4
  • swift 中如何解决循环引用 解决类之间的循环引用 weak:弱引用, 必须为变量(var),可选类型(?),指...
    Mr_LiTong阅读 276评论 0 0
  • ARC ARC是 Object-C 编译特性, 不是运行时特性也不是垃圾回收机制, ARC 所做的只是在代码编译自...