1

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

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

我还发现如果在这里

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

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

//这里的其他代码

[pool drain]

//这里的其他代码

NSLog(@"%li",[str3 length]);// 不工作,可能它现在被销毁了!

4

2 回答 2

5

当没有对 then 的强引用时(即当 release 将它们的保留计数降低到 0 时),对象将被释放。

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

于 2012-11-24T06:39:28.297 回答
0

我认为该对象将在零保留计数后被销毁,并且不能再使用。请参阅此处了解更多信息。

于 2012-11-24T06:38:57.763 回答