内存管理之retain计数

本文深入解析在Objective-C中,如何通过alloc、new、copy和mutableCopy等方法创建对象并掌握其所有权,以及如何通过retain、release和autorelease消息来管理对象的生命周期。

  假如使用alloc、new开头或者包含copy函数的方法来创建一个对象,你就拥有了这个对象的所有权。(假如新对象的retain计数为1,并且不在自动释放池里,那么,你就有义务在不用这个对象的时候释放它)。传递对象所有权一些常见的方法是alloc(也经常会跟着init方法),copy和mutableCopy。

  通过其他方式创建的对象,就不一定拥有这个对象的所有权。(新对象的retain计数为1,放在自动释放池中,如果在自动释放池被清空之前,该对象被retain了,那就不会被释放了,否则,这个对象肯定会被释放)。

  加入并不拥有一个对象的所有权,却想让它一直存在,可发生retain消息来获得所有权(这步操作增加了retain计数)

  当有一个对象的所有权,但后面不再需要它时,可发生release和autorelease消息。(release消息立即减少retain计数;autorelease消息只在自动释放池被清空的时候引起release消息的发生。)

  只有对象还有一个所有者,这个对象就不会被释放。(当retain计数变为0时,就发送dealloc消息)

 

转载于:https://www.cnblogs.com/PJXWang/p/5191761.html

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值