zoukankan      html  css  js  c++  java
  • 内存管理

    1.为什么要进行内存管理

    • 程序运行时的内存资源是有限的,object-c语言所编写的程序中需要实例化对象。
    • 对象是占用内存的,如果创建了对象(分配了内存),而不去释放这些对象的内存,将会发生泄漏
    • 程序所使用的内存会随着 程序对象 的增加而不断怎加
    • 最终内存被耗尽只是就是程序崩溃之时
    • IOS系统为米一个程序分配了30M内存,程序使用内存超过20M会收到警告,超过30M 会吵嚷声程序
    • 管理范围:任何继承NSobjext的对象,对其他的基本数据类型无效

    2.对象的生命周期 

    • 程序中的对象具有生命周期包括以下几个时期

    -对象的初始化

    -对象接收信息

    -对象被释放

    • 如果对象不存在了,其所占用的内存应该交还给系统已被其他新的对象来使用
    • 采用引用计数器的技术得知一个对象的寿命是否结束

    3.引用计数器的操作方法

     

    • 当使用alloc、retain方法或者copy消息创建一个对象时,对象引用计数器,可以向对象发送retain消息
    • 如果要增加某个消息对象的引用计数器,可以向对象发送release或者autorelease消息
    • 如果想要获取某个对象当前引用计数器的值,可以向对象发送retaincount消息
    • 通 常我们没有必要去特地查询一个对象的retain count是多少。查询的结果常常会出乎意料。你不清楚framework里面的其他对象对你感兴趣的这个对象进行了多少retain操作。在debug 内存管理的问题时候,你只要关注保证你的代码符合所有者规则即可。
    • 所谓的所有者规则,也就是谁拥有谁释放,或者是谁创建谁释放,通俗的来讲就是,在哪里让其+1了,就要在相应的地方-1,如果你通过alloc,new,copy来创建了一个对象,那么你就必须调用release或者autorelease方法,不是你创建的就不用你去负责

    5.引用计数

    • 每一个对象有一个整数值,这个整数值与对象本身关联,称为引用计数器
    • 当某写地方需要使用这个对象时,可以将计数器加1,表示需要使用这个对象
    • 使用完毕后,将该对象的引用计数器值减1,表示对象已经使用完毕
    • 如果引用计数器值为0时,表明没有地方在使用该对象,这时系统将销毁该对象,其所占用内存被收回,以便重用

     

     

     

     

  • 相关阅读:
    安卓跑马灯
    utf-8加密用于汉字加密(避免乱码)
    设置将edittext的光标到最后
    自定义UIProgressView,实现渐变色进度条,带动画的
    UIImageView帧动画,包含暂停和继续功能
    UIImageView关键帧动画,监听动画结束的回调
    自定义UICollectionViewFlowLayout实现横向滚动时,离中心点越近,item越大,离中心店越远,item越小的效果
    iOS中UIView的Pan手势和UIScrollView滚动手势的冲突解决方案
    使用Cocoapods创建私有库的流程
    git代码仓库迁移的步骤
  • 原文地址:https://www.cnblogs.com/banchuangshuying/p/4929948.html
Copyright © 2011-2022 走看看