【发布时间】:2012-11-24 06:35:18
【问题描述】:
我发现[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]); // 不工作,可能现在被销毁了!
【问题讨论】:
-
去阅读 Apple 的 Cocoa Core Competencies。里面有很多重要的信息,比如:“当保留计数变为零时,对象被释放(销毁)。”
-
我明白了...系统会自动调用 dealloc 方法来释放零引用计数的对象上的内存空间! ,谢谢大家的意见!
标签: objective-c memory-management reference count