我正在使用以非弧形编写的库(SMTP库 - 通过使用编译器标志来保持非弧形)。现在,我的一个类被注册为该库的委托,并且库传递了保留计数1的对象。前弧我应该已经释放了这样的对象,但现在在弧中我不知道该怎么做?
答案 0 :(得分:0)
请记住,如果类本身是自我释放的,那么你必须在对象之前释放每个类的每个实例变量。 ARC之前的规则说,
使用new,alloc或copy创建对象时,该对象具有 保留计数1.您负责发送对象的发布或 完成后自动释放消息。这样,它就会被清理干净 当它的使用寿命结束时。
当你通过任何其他机制抓住一个对象时,假设它有 保留计数为1,并且已经自动释放。你没有 需要做进一步的工作,以确保它得到清理。如果你要去 在任何时间内坚持对象,保留它并确保 你完成后释放它。
如果您保留对象,则需要(最终)释放或自动释放它。 平衡这些保留和释放。
因此,如果您暂时使用该对象(如在单个函数的范围内),则什么都不做,但是为了更长时间的使用,您可以保留它(将保留计数增加到2)并在完成后释放它,初始保留数为1将是图书馆的工作。