问题标签 [strong-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.
ios - 带闭包的强参考循环
我试图了解何时需要注意由强引用周期引起的可能的内存泄漏。根据我从 swift 文档中收集到的信息,self
在同一实例中声明为实例属性的闭包中使用引用将导致强引用循环,除非我声明一个捕获列表,例如:
现在,不存储为实例属性的闭包或存储为其他类的实例属性的闭包会发生什么?在这些情况下,我还需要担心强参考周期吗?
ios - 什么时候创建强类型的出口?
当我们创建一个插座时,它的属性直接设置为弱类型。然而,弱类型包含可选值。我希望创建的插座具有强类型,以便它始终包含一个值。但是存在内存管理问题并且可以形成强引用循环。
有什么情况需要我创建一个强类型的插座吗?
ios - 什么对我的 viewController 有很强的参考意义?
我正在从控制器层次结构中删除 viewController removeFromParentViewController
,但deinit
视图控制器没有被调用。我怎样才能检查什么对它有很强的参考价值?
有什么方法可以查看内存中存在的参考图吗?
这就是我的 swap` 方法的样子:
我transitionFromViewController
completion
应该添加/删除目标/源视图吗?
有什么方法可以在 Swift中访问refCount
a吗?viewController
我试图用Instruments
. 弄清楚什么对视图控制器有很强的引用,但无法弄清楚。有什么帮助吗?
android - 对活动/片段和垃圾收集中的视图的强引用
在一项活动中,我通常会保留对视图的强引用,以免findViewById(...)
每次必须更新所述视图时都需要。这样做,活动最终看起来像这样:
我的问题是,这些对带有回调的视图的强引用是否必须为空,或者它们的 OnClickListeners 是否设置为空?还是 GC 能够看到整个层次结构已经死了,而 GC 就是全部?
ios - 弱属性和prepareForSegue:一个属性变为空,另一个不变为空
我真的很困惑 prepareForSegue 在弱/强属性上会发生什么。让我解释:
我有两个简单的视图控制器:
- 视图控制器1
- 视图控制器2
与从 ViewController1 到 ViewController2的一个 segue连接。
两个视图控制器都有两个属性:
我无法理解的是,在我的 prepareForSegue 中 NSArray 变为 null 但 NSString 不是。这是来自 ViewController1 的代码:
2015-07-07 17:23:12.915 测试[3675:147600] ViewDidLoad - simpleString: string, simpleArray: (string2, string3)
2015-07-07 17:23:14.521 测试[3675:147600] PrepareForSegue - simpleString: string, simpleArray: (null)
如果我将 NSArray 属性设置为强,它会保持该值。
那么,为什么两个弱属性有不同的行为呢?
swift - willset 和 didset 在 Swift 中被认为是闭包吗?
我了解其目的,willset
但didset
我不确定它们是否被视为关闭。
如果它们是闭包,那么下面的代码不应该产生一个强引用循环吗?
java - 当强引用直接访问弱引用时
在 Java 中,当目标对象 A 仅通过弱引用 B 到达时,A 可以被 GC。如果强引用 C 同时到达弱引用 B 会发生什么?例如,C 指向一个类实例,其中包含一个指向 A 的弱引用 B 的字段。如果 C 是活动的,并且没有其他对 obj A 的弱引用或强引用,A 还能是 GC 吗?
objective-c - 有没有办法将弱引用变成强引用?
我有一个对象被设置为另一个对象的委托,该对象的delegate
属性很弱。
由于没有其他东西引用该委托,因此它最终会被释放,但我希望它能够持续存在,只要父对象就像父对象对其委托有强引用一样。有没有一种简单的方法可以做到这一点?
swift - 如何在 Swift 中识别强引用循环?
是否有工具或方法可以在我的 SWIFT 代码中定位强引用循环?
强引用循环是当两个类实例在没有适当安全措施(weak
/ unowned
)的情况下相互引用时,因此一旦我创建的所有变量停止引用这些对象,垃圾收集器就无法处理它们。
runtime - ARC下运行时添加__strong ivar
@interface 中声明的普通 ivar 是 __strong 默认值。
现在,我在运行时创建上面的类:
但是,名为“name”的 ivar 不是 __strong ivar。
当我使用object_setIvar()
时,Ivar 不能保存 newValue(它将在自动释放池结束时被释放)。
然后我找到了两个函数class_setIvarLayout
和class_setWeakIvarLayout
,但是里面没有任何有用的信息Objective-C Runtime Reference
。
那么,如何在运行时创建的类中添加 __strong Ivar?