问题标签 [reference-cycle]
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.
ios - 使用 Timer 的参考周期中的强、弱或无主
我有一个对重复调用闭包的对象UIViewController
的引用。对象在其块中Timer
捕获Timer
。self
据我了解,这导致retains cycle
了视图控制器和块之间的关系。有一个逻辑是把定时器设置为nil,然后retain cycle被打破,但它可能不会被执行。
我的问题如下:只要应用程序存在,视图控制器就会存在(至少在当前实现中)。在这种情况下 - 我应该如何最好地处理这个保留周期?我应该忽略它,因为无论如何都不会释放视图控制器。我是否应该考虑未来可能发生的变化并使用unowned
或weak
参考以及哪一个来处理它。我想应该是unowned
因为计时器仅由 View Controller 保留,并且一旦 View Controller 释放就应该释放它,但不确定我是否遗漏了什么。先感谢您。以下代码是我正在谈论的简单示例。Class A
是视图控制器。
glib - Vala 闭包参考循环
我正在 Vala 中编写一个类,在其中我将同一个对象的两个属性绑定在一起,并使用一个闭包将一个对象转换为另一个对象。
闭包保留一个引用this
(因为我使用this.scale
),它创建了一个引用循环,即使对它的所有其他引用都丢失了,它也使我的类保持活动状态。
只有当引用计数达到 0 时,绑定才会被移除,但只有在投标及其闭包被移除时,refcount 才会达到 0。
有没有办法让闭包引用this
弱?还是在 refcount 达到 1 时进行探测以将其删除?
javascript - 在JavaScript中的对象函数中删除对象的引用本身
我想通过它的功能从对象集合中删除对象本身。如果我像下面这样编码,它当然会引用循环或任何其他错误。
我知道我可以用delete obj_collec['obj1']
. 但我想知道如果我像上面那样编码会发生什么。
kotlin - 如果传递了一个捕获封闭“this”的对象,是否有一个注释会触发警告?
我有一个带有这个签名的 Kotlin 函数:
该函数所做的是附加disposer
到一个幻像引用并安排它在obj
垃圾收集时关闭(即当幻像引用对象入队时)。的类obj
应该这样称呼它:
Closeable
(让我们忽略使用 general s依赖 this 是否是一个好主意;有问题的实际资源是由本机/JNI 代码管理的指针——我正在尝试遵循Hans Boehm 的建议。但所有这些都与这个问题。)
我担心这种设计很容易无意中传递this
从外部范围捕获的对象,创建引用循环并完全防止对象被垃圾收集:
有没有我可以添加到disposer
参数中的注释,在这种情况下会触发警告?