当引用计数设置为零时是否释放内存?

时间:2012-11-24 06:35:18

标签: objective-c memory-management reference count

我发现[object_name retain]将对象引用计数增加1,[object_name release]将对象引用计数减少1. [pool drain]对它引用的所有对象应用release。

现在我很困惑。当没有引用它时,对象会发生什么? releasedrain只是递减引用计数,所以内存实际上是在零引用计数上释放的还是我仍然有一个零引用计数的对象?

我也在这里找到了

[pool drain] //使我的Object str3引用计数为零

NSLog(@"%li",[str3 length]); //它有效,对象可能还没有被破坏!

//其他代码

但是

[pool drain]

//其他代码

NSLog(@"%li",[str3 length]); //无法正常工作,现在可能已被销毁!

2 个答案:

答案 0 :(得分:5)

当没有强引用时(即释放时将其保留计数降低为0),对象将被释放。

但请记住,-retainCount方法无用,您不应该调用它。

答案 1 :(得分:0)

我认为对象将在零保留计数后被销毁,并且不能再使用了。有关详情,请参阅here