问题标签 [unowned-references]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1270 浏览

swift - 对 Swift 单身人士总是使用 [unowned self] 是安全的吗?

由于共享单例实例将始终存在,我们可以安全地[unowned self]在该单例类中的所有闭包中使用吗?

0 投票
3 回答
2268 浏览

swift - 内部闭包的捕获列表是否需要将 `self` 重新声明为 `weak` 或 `unowned`?

如果我有一个闭包传递给这样的函数:

如果我在捕获列表中声明 self而没有[weak self]在捕获列表中再次someFunctionWithTrailingClosure重新声明它已经成为一种类型,但它是否也成为引用?weakanotherFunctionWithTrailingClosure selfOptionalweak

谢谢!

0 投票
1 回答
4940 浏览

ios - 在 Swift 中,无主引用与弱引用

如果你有一个对Bone的弱引用的Dog,这意味着在这种情况下 Dog 是引用的“所有者”,并且它使用骨骼,但是骨骼可能不存在并且 Dog 仍然可以工作(因为引用到骨头是可选的)。

但是对于“unowned”,似乎关键字“unowned”不是在引用的所有者声明中使用,而是在另一个对象中使用。例如,Bone 对其狗的引用被标记为“unowned”。

无主不安全。如果所有者在程序中的某个时刻不存在,它可能会崩溃,并且它不能是可选的。为什么要使用 unowned 而不是弱引用?

为什么不只使用弱?据我了解,这与大声失败与默默失败有关。在 unowned 的情况下,如果 bone 最终没有狗,应用程序总是会崩溃,而如果我们使用 weak,你最终会得到一个仍然存在的骨头,一个“幽灵”狗。

0 投票
1 回答
5681 浏览

swift - 迅速。unowned 只能应用于类和类绑定协议类型。弱工作正常

请把问题读到最后,因为它似乎与许多类似的问题重复,但事实并非如此。大多数其他问题使用带let关键字的闭包在对象初始化之前捕获弱或无主的自我。我不。

我的代码:

当我尝试编译时,我得到一个突出显示的错误unowned var responder : ObserverProtocol!

'unowned' 只能应用于类和类绑定协议类型,而不是 'ObserverProtocol!'

如果我更改unownedweak我可以编译。

显然有一些unowned我不明白的概念,所以如果有人可以向我解释,我将不胜感激。

PS我知道类似这样的多个问题:

UIView, CMDeviceMotionHandler : unowned 只能应用于类和类绑定协议类型

但我想这不是我的情况。

0 投票
2 回答
663 浏览

ios - 为什么我不能给一个无主常量一个初始值?

这会产生错误:

我正在尝试深入了解关键字的确切unowned作用。

0 投票
1 回答
48 浏览

swift - 当两个属性都不能为零时,unowned 在分配的内存方面有什么区别?

对于我添加的带有反初始化器的 swift 编程指南中的以下代码,无论是否使用 unowned 关键字,生成的调试打印输出都是相同的。swift 编程指南说,当引用彼此的类实例的两个属性永远不会为零时,使用无主和隐式展开的选项是一种打破强引用循环的方法。如果这两个属性都不会为零,那与强引用循环有何不同?例如,为什么我们要在这种特殊情况下使用 unowned 关键字,尤其是当调试读数显示无论是否使用 unowned 内存分配都没有区别时?

调试读数:

注意:这是在操场上。

0 投票
1 回答
192 浏览

swift - 关于应该把[无主的自我]放在哪里的困惑

我有一个保留的循环,所以我的视图控制器的 deinit 不会被调用,我正在尝试通过添加 [unowned self] 来解决这个问题,但我不太确定在我的案例中将 unowned 放在哪里:

情况1

案例2

我很好奇这两种情况之间有什么区别以及为什么一种有效而另一种无效

0 投票
2 回答
1049 浏览

swift - 将 [unowned self] 添加到闭包参数 Swift

我有一个带有完成处理程序的函数,返回一个或多个参数。

在客户端中,当执行完成处理程序时,我希望unowned引用self,以及访问传递的参数。

这是 Playground 示例,说明了我要实现的问题和目标。

0 投票
1 回答
148 浏览

swift - 弱或无主或无

我有一个 ViewController 类,如下所示:

这是 ViewModel 类

现在,这是否会创建一个强大的参考循环?

如果这创造了一个,那么使用什么 - 弱或无主?

0 投票
1 回答
673 浏览

swift - Swift - @escaping 和捕获列表澄清

我试图尽可能多地研究这个主题,但我仍然有一些事情没有在我的脑海中解决,我会很感激能得到关于它们的澄清..所以我提出了一些问题..

  1. 编译器如何知道我必须在后台线程上添加@escaping,然后强迫我使用它?
  2. 使用@escaping 是否需要付费?如果没有.. 为什么不总是标记?如果我用@escaping 标记关闭,即使我真的不需要它,会出现什么问题?当我试图这样做时..我的代码没有问题,无论有没有@escaping,结果都保持不变。
  3. 使用捕获列表 [weak self] [unowned self] 的成本是多少?我知道它会复制该对象,所以我想暂时它会占用更多内存,但在使用结束时,该副本将从内存中删除..那么,使用它有更多缺点吗?