【问题标题】:difference between drain, release,dealloc and retain in Objective-C/Objective-C/中的drain、release、dealloc和retain之间的区别
【发布时间】:2009-11-02 16:27:20
【问题描述】:

您好,我想知道 Objective-C 中的 drain、release、dealloc 和 retain 之间的区别。

【问题讨论】:

    标签: objective-c memory-management


    【解决方案1】:
    • retain 增加对象的引用计数
    • release 减少对对象的引用
    • drain 用于代替 NSAutoreleasePool 对象的 ONLY 释放,因为一些与 Objective C 垃圾回收相关的奥秘
    • 一旦对象的 retainCount 达到 0,系统就会调用dealloc。它是您清理对象拥有的各种东西(如解构器或终结器)的地方。您应该绝不直接调用它,除了在 dealloc 例程结束时调用 [super dealloc]

    你真的应该通读苹果的内存管理documentation

    【讨论】:

    • -drain 在 NSAutoreleasePool 上很有用,因此它也可以在 GC 下运行。即,它立即触发收集。如果我们使用 -release,那么在 GC 下,该消息将被忽略,不会发生任何事情。
    猜你喜欢
    • 2010-10-08
    • 2010-10-18
    • 2015-11-03
    • 1970-01-01
    • 2012-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多