A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© zhuozhuo 中级黑马   /  2015-9-17 23:02  /  767 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

一、手动内存管理快速入门
  1、引用计数器:

      用来保存当前对象有几个拥有者或者有几个东西在使用它(数字)

  2、引用计数器的作用:

     用来判断对象是否应该回收内存空间(如果对象不等于nil,当引用计数器为0,此时要回收对象的内存空间)

  3、引用计数器的操作:

      retain:使得引用计数器+1
      releas:使得引用计数器-1
      retainCount:得到引用计数器的值

  4、如果一个对象被释放的时候,会有一个“临终遗言”(会调用该对象的dealloc方法)

     注意:
         1)dealloc 方法是NSObject的,一般我们要重写dealloc方法
         2)在dealloc 方法的内部,要调用[super dealloc];

  5、手动内存管理:

       MRC:手动内存管理
       ARC:自动内存管理

      注意:我们创建一个项目,此时默认的是ARC(自动内存管理)
           把项目从 ARC 模式改成 MRC 模式

二、内存管理原则
内存管理:

      对象如果不在使用了,就应该回收他的空间,防止造成内存泄露

  内存管理的范围:

     管理任何继承了NSObject的对象的内存管理,基本数据类型内存不需要我们管理


   内存管理的原则:

     1)原则

       只要还有人在使用某个对象,那么这个对象就不会被回收;
       只要你想使用某个对象那么就应该让该对象(retain 一次)的引用计数器+1;
       当你不想使用这个对象时,就应该让对象(release 一次)的引用计数器-1;

     2)谁创建,谁release

       (1)如果你通过alloc,new,copy创建一个对象,那么你就必须调用release 或者 autorelease方法
        (2) 不是你创建的就不需要你负责

     3)谁retain,谁release

        只要你retain 了,无论对象如何生成的,你都要调用release

     4)总结:

        有始有终,有加就有减。曾经让某个计数器+1,就应该让其在最后-1。


  三、  内存管理研究内容:

       1、野指针:1)定义的指针变量没有初始化    2)指向的空间已经被释放了

       2、内存泄露:栈区的空间被回收了,而堆区的空间还在

  */

1 个回复

倒序浏览
辛苦辛苦,学习。。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马