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

    内存管理:

    用new或者alloc创建的对象就是自己创建的

    ARC:自动管理

    MRR:手动管理  reference counting

    将所创建的工程改为MRR环境

    两种内存管理的常见问题:

    1.释放或者重写了正在使用的数据(对象)->程序奔溃

    2.没有释放不需要的对象->内存泄露

    内存管理的核心:对象的拥有权

    拥有权在实际操作中的体验:

    1.某个代码块对其创建的对象有拥有权

    2.某个类的属性变量 该类的对象对其属性有拥有权

    只要这个对象有一个拥有者,那么这个对象就会一直存在,一旦它没有拥有者(即引用计数为1)时,那么系统会自动销毁。 

    对象的拥有权:

    1.凡是通过new、alloc、copy、mutableCopy创建的对象都有拥有权 反之没有

    2.不是自己创建的对象可以使用retain来获得拥有权  对属性的申明可以使用strong或者retain

    当然 申明拥有权之后也需要自己释放

    3.当某一个对象不再使用时,需要使用release或者autorelease释放

    4.对于属性变量 要重写父类的dealloc方法释放对象对其的拥有权

    对于属性变量的赋值,尽量使用self. 因为set方法中有内存管理在里面:释放、申明拥有权。

    循环引用问题:

    解决方法:一方强引用,一方弱引用。weak 据实际情况而定 哪一方强引用,哪一方弱引用

    自动释放池:

  • 相关阅读:
    [总结] 二维ST表及其优化
    [51Nod 1515] 明辨是非
    [总结] fhq_Treap 学习笔记
    [ZJOI2008] 骑士
    [SDOI2010] 古代猪文
    [POJ 1006] 生理周期
    [POJ 2891] Strange Way to Express Integers
    [Luogu 1516] 青蛙的约会
    python第十三天
    python第十二天-----RabbitMQ
  • 原文地址:https://www.cnblogs.com/kinghyt/p/11265361.html
Copyright © 2011-2022 走看看