【问题标题】:Do i have to release no-arc object in arc?我必须在弧中释放无弧对象吗?
【发布时间】:2012-12-18 10:49:46
【问题描述】:

我正在使用以非弧编写的库(SMTP 库 - 通过使用编译器标志使其保持非弧)。现在,我的一个类被注册为这个库的委托,并且库正在向我传递保留计数为 1 的对象。弧前我应该释放这样的对象,但现在在弧中我不知道该怎么办?

【问题讨论】:

    标签: smtp automatic-ref-counting


    【解决方案1】:

    请记住,在 ARC 之前,如果类本身被释放,则您必须在对象之前释放每个类的每个实例变量。 ARC 之前的规则说,

    • 当您使用 new、alloc 或 copy 创建对象时,该对象具有 保留计数为 1。您负责向对象发送释放或 完成后自动释放消息。这样,它就被清理干净了 当它的使用寿命结束时。

    • 当您通过任何其他机制获取对象时,假设它具有 保留计数为 1 并且它已经被自动释放。你不 需要做任何进一步的工作以确保它得到清理。如果你要去 在任何时候都挂在物体上,保留它并确保 完成后释放它。

    • 如果您保留一个对象,您需要(最终)释放或自动释放它。 平衡这些保留和释放。

    因此,如果您要临时使用该对象(例如在单个函数的范围内),您什么都不做,但为了更长时间的使用,您可以保留它(将保留计数增加到 2)并在完成后释放它,初始保留计数为 1 将是图书馆要做的工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-06-21
      • 2014-09-02
      • 1970-01-01
      • 2013-03-29
      • 1970-01-01
      • 2012-11-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多