关闭

内存管理

141人阅读 评论(0) 收藏 举报

 内存管理的对象:OC中的对象,对基本类型无用

 OC中采用引用计数器对内存管理

 OC中每个对象都有一个引用计数器,是一个整数,表示对象被引用的次数(有多少个人在使用它)

 每个对象会分配4字节的存储空间存引用计数器

 当采用allocnewcopy(mutableCopy)构造一个新对象时,新对象的引用计数器值为1.

 当引用计数器值为0时,这个对象所占的内存就会被释放(也就是说,只要这个对象的引用计数器值不为0,它所占的空间永远不会被释放,除非整个程序退出)

 当给对象发送retain消息,引用计数器值+1

 当给对象发送release消息,引用计数器值-1

 给对象发送retainCount消息,可以获取引用计数器值

 当一个对象的引用计数器值为0时,这个对象所占的空间就会被释放

 当对象被释放时,就会给它发送dealloc消息。不能手动调用,系统自动调用

 一般会重写dealloc方法,重写时,一定要调用[super dealloc];一般放在最后

 引用技术:

 ARCautomatic references counting

 MRC: manual references counting

 黄金法则:

 1、当采用allocnewcopy(mutableCopy)构造一个新对象时,新对象的引用计数器值为1.

 2、如果想要拥有某个对象,需要给它发送retain消息

 3、如果不想使用某个对象,需要给它发送release或者autorelease消息

 4、谁allocnewcopy了,谁需要release

 5、谁retain,谁release


过度释放,不能再次释放已经释放的空间,p是一个野指针(指向一个已经被释放的内存空间,空间不可用)

nil发送消息,不能给野指针发送消息


0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:13169次
    • 积分:463
    • 等级:
    • 排名:千里之外
    • 原创:13篇
    • 转载:38篇
    • 译文:16篇
    • 评论:0条