我正在转换到ARC(自动引用计数),这篇文档非常有帮助:Transitioning to ARC Release Notes。它说:
块在ARC中如何工作?
在ARC模式下,当您将块通过堆栈传递时(例如在返回值中),块“只需工作”。您不再需要调用Block Copy。但是,当向arrayWithObjects:和执行保留的其他方法传递“向下”堆栈时,仍然需要使用[^{}] copy。
有人可以详细解释一下或举个例子吗? 我理解这意味着即使块在声明范围之外使用,现在ARC会更加智能地处理它,通常我不再需要做[block copy],但是当我想将块传递给将保留它的函数时,我仍然需要复制它。 这正确吗?
实际上,我已经进行了一些实验,即使我没有复制块就将其传递给数组,目前看起来也没问题,所以问问这个问题。 谢谢!
块在ARC中如何工作?
在ARC模式下,当您将块通过堆栈传递时(例如在返回值中),块“只需工作”。您不再需要调用Block Copy。但是,当向arrayWithObjects:和执行保留的其他方法传递“向下”堆栈时,仍然需要使用[^{}] copy。
有人可以详细解释一下或举个例子吗? 我理解这意味着即使块在声明范围之外使用,现在ARC会更加智能地处理它,通常我不再需要做[block copy],但是当我想将块传递给将保留它的函数时,我仍然需要复制它。 这正确吗?
实际上,我已经进行了一些实验,即使我没有复制块就将其传递给数组,目前看起来也没问题,所以问问这个问题。 谢谢!