黑马程序员--内存管理和自动引用计数

内存管理关心的是什么?

清理内存以便内存能够再次利用


Objective-C的基本内存管理模型分为三种:

  • 自动垃圾收集
  • 自动引用计数(ARC)
  • 手动引用计数和自动释放池

1. 自动垃圾收集

特点:释放时间不确定性和释放顺序不确定性

2.手动管理内存

自动释放池:当到释放池结束时,对添加到释放池中的对象发送release消息,当对象引用计数为0时,系统调用derelease来释放内存。

关于

手动内存管理总结(共6点)

  • 如果需要保持一个对象不被销毁,可以使用retain,在使用完对象后需要使用release进行释放;
  • 使用release进行释放对象时,对象并不一定立刻被销毁,只有引用计数变为0时才有系统调用dealloc进行释放;

  • 自动释放池结束时会向对发送autorelease的所有的对象发送release消息,如果池中某个对象引用计数变为0,则系统调用dealloc销毁该对象。
  • 自动释放池结束时对池中对象发送release消息也不一定能够销毁所有的对象,因为某个对象引用计数可能还不为0;
  • 当程序终止时所有的对象都被销毁;
  • 对使用alloc  retain  copy方法的任何对象,以及具有retain和copy的属性的对象释放时,需要dealloc方法使得在对象释放的时候能够释放实例变量


3.自动引用计数

强变量:所有对象指针变量都是强变量;
若变量:处理两者关系时使用,当一个若变量声明时,系统会追踪这个变量的饿引用,当引用对象释放时,若变量会被自动设置成nil,避免无意间给该变量发送消息引起系统崩溃。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值