内存管理全解析:从对象生命周期到Cocoa规则
1. 对象生命周期
在程序的世界里,对象如同现实世界中的生物一样,有着自己的生命周期。对象通过 alloc 或者 new 方法诞生,在其存活期间接收消息并执行相应操作,还能通过组合和方法参数与其他对象建立联系,当生命周期结束时,对象会被释放,其占用的内存资源会被回收,以供后续对象使用。
2. 引用计数
对象诞生的时机很容易确定,我们也经常探讨如何使用对象,但如何判断对象的生命周期何时结束呢?Cocoa采用了引用计数(也称为保留计数)的技术。每个对象都有一个与之关联的整数值,即引用计数。当代码对某个对象感兴趣时,会增加该对象的引用计数,表示“我对这个对象感兴趣”;当代码不再需要该对象时,会减少其引用计数,表明已不再关注该对象。当引用计数降为0时,意味着没有代码再关心这个对象,此时对象会被销毁,其占用的内存会被系统回收。
当通过 alloc 、 new 或者 copy 方法创建对象时,对象的引用计数会被初始化为1。可以通过向对象发送 retain 消息来增加引用计数,发送 release 消息来减少引用计数。当对象的引用计数变为0即将被销毁时,Objective - C会自动向对象发送 dealloc 消息。你可以在自己的对象中重写 dealloc 方法,以释放可能分配的相关资源,但绝不要直接调用 dealloc 方法
超级会员免费看
订阅专栏 解锁全文
7

被折叠的 条评论
为什么被折叠?



