ARC 如何确定是使用保留还是复制?

Posted

技术标签:

【中文标题】ARC 如何确定是使用保留还是复制?【英文标题】:How does ARC determine whether to use retain or copy? 【发布时间】:2012-06-29 15:34:23 【问题描述】:

作为带有 ARC 选项的 LLVM 编译器会自动为我们添加保留、复制、释放和自动释放,但是 ARC 是如何确定使用保留还是复制的呢? 在此先感谢:)

【问题讨论】:

可能有帮助 ***.com/questions/6260256/… ***.com/questions/6385212/… @janusfidel 谢谢你,但这可能不是我想要的答案。 【参考方案1】:

如以下文档中所述 (http://clang.llvm.org/docs/AutomaticReferenceCounting.html#meta)

Automatic Reference Counting 实现自动内存管理 对于 Objective-C 对象和块,将程序员从 需要显式插入保留和释放。它不提供 循环收集器;用户必须明确管理他们的生命周期 对象,手动中断循环或使用弱或不安全的引用。

你也可以通过这个线程的讨论 - How does the new automatic reference counting mechanism work?

【讨论】:

【参考方案2】:

ARC 不添加copy,如果您需要副本,那仍然是您的责任。它只为您管理retainrelease。如果您手动 copy 某些东西,尽管它知道您获得了一个新对象,但它必须在某个时间释放。

【讨论】:

以上是关于ARC 如何确定是使用保留还是复制?的主要内容,如果未能解决你的问题,请参考以下文章

ARC 下的 NSString 属性应该是强的还是复制的?

(Batch) 如何判断 `%1` 是文件还是文件夹? [复制]

C++ 基类列表以及如何确定类类型

如何确定文件是c#中的二进制文件还是文本文件? [复制]

您将如何确定系统中的堆栈是向上还是向下增长? [复制]

如何保留 $in 查询的游标顺序? [复制]