一 简介
OC 语言使用引用计数来管理内存每个对象都有个可以递增或递减的计数器,如果想某个对象继续存活,那就递增其引用计数,用完之后,就递减其计数,计数变为0,就销毁。
二 引用计数工作原理
NSObject 协议声明了下面三个方法用于操作计数器,以递增或递减其值
retain 递增引用计数
release 递减引用计数
autorelease 稍后清理“自动释放池”时,在递减引用计数
为避免在不经意间使用了无效对象,一般调用完release 之后都会清空指针。这就能保证不会出现可能指向高无效对象的指针,这种指针通常称为 dangling pointer 。
三 return cycle
使用引用计数机制时,经常要注意的一个问题就是 return cycle,就是呈环形状相互引用多个对象,这将导致内存泄露,因为循环中的对象其保留计数不会降为0。对循环中的每一个对象来说,至少有另外一个对象引用着它,垃圾回收器会把相互引用的对象全部回收走,而OC 引用技术架构中,则享受不到这种便利,通常采用 weak reference 来解决次问题,从而避免内存泄露
时间: 2024-10-07 14:26:48