【问题标题】:Strong vs Retain in ARCARC中的强vs保留
【发布时间】:2015-03-03 11:10:11
【问题描述】:

我知道有很多关于“强”与“弱”的文章。但是所有文档都说两者都是 100% 的同义词,您可以使用“strong”代替“retain”,反之亦然。

我的问题是:如果它们相同,为什么 Apple 会引入新的“强”关键字?我已经在一个示例项目中进行了测试,并且“强”和“保留”属性似乎都做了同样的事情。你不认为如果苹果引入了'strong'属性,它应该不允许使用'retain'属性吗?还是我错过了什么?

【问题讨论】:

  • strongretain 几乎相同,但是因为在 ARC 中您不需要担心 retaining-release 对象,strong逻辑上更适合 ARC 中的属性...就像在 MRR 中,retainreleaseautorelease 具有相反的等价物,在 ARC 环境中,strong 没有这样的相反等价物,这就是为什么在逻辑上在 ARC 中使用 strong 而不是 retain 更正确;如果这对你有意义。
  • @Katoch 我读过它指向同一个东西strong =我理解的保留。但问题是为什么要在开发人员心中产生疑问(尽管我总是使用强),因为保留与手动内存管理有关,他们应该完全停止在 ARC 项目中使用保留,为什么它仍然在 ARC 中占有一席之地?
  • 一行回答。保留在非弧中,强在弧中..

标签: ios objective-c memory-management properties automatic-ref-counting


【解决方案1】:

retain 是前 ARC 时代的遗留物,您可以根据您是否希望它留在内存中来增加/减少对象 retain count

显然,有了 ARC,您就不必再担心这个问题了,我怀疑 retain 可能只是为了方便更资深的 Objective-c 程序员使用而留下。

arc 中最常用的关键字是:(strong, weak, nonatomic, readonly, copy)

【讨论】:

    猜你喜欢
    • 2012-02-14
    • 1970-01-01
    • 2011-12-09
    • 1970-01-01
    • 2012-09-29
    • 1970-01-01
    • 1970-01-01
    • 2011-12-07
    • 2011-12-09
    相关资源
    最近更新 更多