16、内存管理全解析:从对象生命周期到Cocoa规则

内存管理全解析:从对象生命周期到Cocoa规则

1. 对象生命周期

在程序的世界里,对象如同现实世界中的生物一样,有着自己的生命周期。对象通过 alloc 或者 new 方法诞生,在其存活期间接收消息并执行相应操作,还能通过组合和方法参数与其他对象建立联系,当生命周期结束时,对象会被释放,其占用的内存资源会被回收,以供后续对象使用。

2. 引用计数

对象诞生的时机很容易确定,我们也经常探讨如何使用对象,但如何判断对象的生命周期何时结束呢?Cocoa采用了引用计数(也称为保留计数)的技术。每个对象都有一个与之关联的整数值,即引用计数。当代码对某个对象感兴趣时,会增加该对象的引用计数,表示“我对这个对象感兴趣”;当代码不再需要该对象时,会减少其引用计数,表明已不再关注该对象。当引用计数降为0时,意味着没有代码再关心这个对象,此时对象会被销毁,其占用的内存会被系统回收。

当通过 alloc new 或者 copy 方法创建对象时,对象的引用计数会被初始化为1。可以通过向对象发送 retain 消息来增加引用计数,发送 release 消息来减少引用计数。当对象的引用计数变为0即将被销毁时,Objective - C会自动向对象发送 dealloc 消息。你可以在自己的对象中重写 dealloc 方法,以释放可能分配的相关资源,但绝不要直接调用 dealloc 方法

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值