Objective-C中drain、release、dealloc和retain的区别是什么?

6

嗨,我想了解Objective-C中drain、release、dealloc和retain之间的区别。

1个回答

23
  • retain 增加对象的引用计数
  • release 减少对象的引用计数
  • drain 只用于NSAutoreleasePool对象,用于替代release,由于Objective C垃圾回收机制相关的某些秘密。
  • dealloc 系统在一个对象的retainCount 归零时调用它。这是你清理对象所拥有(如析构器或终结器)的各种东西的地方。你不应直接调用它,除了在dealloc例程的结尾处调用[super dealloc]之外。

您真的应该阅读一遍苹果公司的内存管理文档


1
-drain 在 NSAutoreleasePool 中非常有用,因为它也可以在 GC 下运行。换句话说,它会立即触发一次垃圾回收。如果我们使用 -release,则在 GC 下,该消息将被忽略,什么也不会发生。 - kperryua

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接