相关疑难解决方法(0)

弱引用和无引用引用之间有什么区别?

斯威夫特有:

  • 强引用
  • 弱参考
  • 无主参考文献

无主参考如何与弱参考不同?

什么时候使用无主参考安全?

无主引用是否存在安全风险,如C/C++中的悬空指针

memory-management weak-references automatic-ref-counting dangling-pointer swift

232
推荐指数
4
解决办法
7万
查看次数

Swift在"无主(安全)"和"无主(不安全)"之间有什么区别?

苹果斯威夫特编程语言指南中提到的捕捉符 unowned(safe)unowned(unsafe),除了weakunowned.

我(想我)明白之间的差别weakunowned; 但unowned(safe)和之间有什么区别unowned(unsafe)?指南没有说.


请:不要仅仅依赖于描述Objective-C等价物.

memory-management automatic-ref-counting swift

26
推荐指数
4
解决办法
5156
查看次数

斯威夫特的弱势与无足.内部差异是什么?

我理解的使用和肤浅的差异weak,并unowned在斯威夫特:

我见过的最简单的例子是,如果有a Dog和a Bone,则Bone可能有弱引用Dog(反之亦然)因为每个可以彼此独立存在.

在另一方面,在的情况下HumanHeart,则Heart可能有一个unowned人类的参考,因为一旦Human变成......"引用",将Heart不能再合理地进行访问.那和经典的例子一起CustomerCreditCard.

所以这不是问题的重复.


我的问题是,有两个这样相似的概念有什么意义?内部差异是什么,需要两个关键字,看起来基本上99%相同的东西?问题是为什么存在差异,而不是存在差异.

鉴于我们可以像这样设置一个变量:weak var customer: Customer!,unowned变量不可选的优点是一个有争议的问题.

我可以看到使用vs隐式展开变量via 的唯一实际优点是我们可以通过引用使引用保持不变.unownedweak!unownedlet

......也许编译器可以为此做出更有效的优化.

这是真的,还是在幕后发生了其他事情,为保留两个关键词提供了令人信服的论据(尽管略有区别 - 基于Stack Overflow流量 - 显然让新的和经验丰富的开发人员感到困惑).

我最感兴趣的是听过那些使用过Swift编译器(或其他编译器)的人.

weak-references compiler-optimization memory-safety swift

15
推荐指数
2
解决办法
821
查看次数