问题标签 [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.

0 投票
2 回答
1268 浏览

objective-c - property_getAttributes() 在设置为只读时在保留、强、弱和分配属性之间没有区别

我正在尝试使用property_getAttributes()运行时函数获取对象的属性。某些属性设置为只读。但是当我尝试区分保留/强、弱和分配属性时,问题就来了。例如:

假设我们有:

我们得到属性列表并打印

结果是:

...因此没有针对弱、强/保留的特定代码,当属性为只读时分配属性:(

问题是:有没有其他方法可以知道属性是否弱、强/保留、分配?

0 投票
1 回答
2358 浏览

objective-c - 在 Objective-C 中将类对象设置为另一个类的属性

我对Objective C很陌生,所以也许这真的很简单,但是我构建了一个类,该类将存储类引用等。这是我的 .h 文件中的内容:

我感到很糟糕的地方是我无法将类对象分配给此类的实例,因为我可以将它们添加到数组或变量中:

我收到一个错误:

“ARC不允许将Objective-C指针隐式转换为'__unsafe_unretained Class *'”

似乎它希望 filterClass 属性强大,但这也会产生错误,因为据我了解,您不能将原始类型定义为强大的。显然,我可以将字符串存储为对类的引用并使用 -NSClassFromString,但是如果我可以只传递类对象会很好。因为我可以将它们放在数组中,而且看起来应该是可能的。让我知道我是否完全错了。

0 投票
1 回答
47 浏览

java - 如何防止一个值强引用它的键?

一个比我优秀得多的程序员告诉我,他WebSocketWeakHashMap. 我自己查看了该地图,它看起来很完美,因为连接将关闭,而负责保持地图的线程不会立即意识到,从而允许对关闭的连接进行垃圾收集。

文档中,我注意到“WeakHashMap 中的值对象由普通的强引用保存。因此应注意确保值对象不会直接或间接地强引用它们自己的键,因为这会阻止密钥被丢弃。”。

这是否意味着一个值根本不应该引用它的或任何其他键,WeakHashMap以免阻止垃圾收集?

值对它的键的强引用究竟是如何产生的?

例如,我需要保存与密钥(连接)关联的 IP 和 DNS 地址列表。我如何确保那些不是对密钥的强引用InetSocketAddressthen InetAddress

0 投票
4 回答
1130 浏览

ios - iOS 弱引用的释放

我正在开发一个自定义iOS SDK。我正在根据我的要求创建弱而强的引用。我不清楚的是:弱引用对象何时会被解除分配?

假设我有 3 个对象A,B,CA对 有弱引用BB对 有强引用C

A --- >(weak ref) B --->(strong ref)C. 所有 3 个对象都是内存中的对象。由于B没有对它的任何强引用,它可能会被取消分配。一旦B被释放,C对象内存泄漏。我不能有从“c”到“B”的强引用来防止它被释放,因为它可能会导致保留周期。ARC 将如何决定解除分配B我确实明白,当最后一个对它们的强引用消失时,对象将立即被释放。但是无论如何都没有强烈引用“B”的对象。在这种情况下,B什么时候被释放?

0 投票
1 回答
109 浏览

ios - 在执行使用对 self 的强引用的块时更改 self 的 @property 值

我正在我的应用程序中处理网络请求,并在 NSOperationQueue 中使用 NSBlockOperations 来异步执行此操作。但是,如果调用它们的视图控制器被释放(已从导航堆栈中弹出),我希望能够取消这些操作。

这是我所拥有的简化版本:

refreshPostsInPart:DataController 的方法中,我使用 while 循环对来自 App.net 的分页数据进行重复的网络请求。在循环的每次迭代中,我都会检查 DataController 的属性self.isCancelled(类型为 BOOL),如果是,NO我会继续发出请求。

在我dealloc的 DataController 方法中,我将此属性设置为YES,以便在 while 循环的下一次迭代中,我将停止发出请求。从本质上讲,我cancelAllOperations在使用 NSBlockOperation 时实现了一个穷人。

问题:self.isCancelledNO我的 dealloc 方法中设置为时,我是否也设置self.isCancelled了块中正在使用的 strongSelf 引用?

0 投票
2 回答
106 浏览

objective-c - 返回相关视图的值时声明弱属性还是强属性?

我阅读了 Stack Overflow 的答案,该答案将strong对象的属性与狗的皮带进行了比较。对于每一个带有强引用的声明,都会给狗添加一条新的皮带。一旦每个遛狗的人回家(或者一旦每个具有强引用的对象都被释放),狗(分配的内存)就可以被释放。我想事情就是这样。如果我完全扼杀了那个,我向原始海报道歉。无论如何,这是我的情况。我有一个NSDocument子类,它有一个名为backgroundColor. 这是我的NSDocument子类在访问器/突变器方面所做的事情:

因此,我的文档对象实际上并不拥有“皮带”,但与此同时,让那只狗继续行走很重要,否则文档将没有背景颜色。现在我想我只是对这个比喻感到困惑。归根结底,我只想知道是否将“转发”属性声明为 isstrongweak.

谢谢!

0 投票
2 回答
912 浏览

java - Java中强引用或弱引用可访问的对象

我正在与垃圾收集器作斗争。我想列出从某个对象强或弱可达的所有对象。我知道我需要递归地做,但我找不到一种简单的方法来实现它。请你帮助我好吗?

0 投票
0 回答
148 浏览

java - Java中的垃圾收集器和四种类型的引用

我正在与 Java 中的垃圾收集器作斗争。我想在三个列表中列出从某个对象可访问的所有对象,具体取决于引用类型:strong, soft, weak. 那里没有幻影。我知道我需要递归地通过反射来完成它,但我找不到一种简单的方法来实现它。请你帮助我好吗?这不是一个非常困难的问题,但我不知道如何以简单正确的方式实现它。注意我不是要检测内存泄漏。

这是我目前得到的,但它并没有真正起作用:

0 投票
1 回答
209 浏览

java - 强引用类

java.lang.ref.StrongReferencejdk1.7为什么没有class?(参见 JDK-6392701

我正在尝试实现一种需要能够以不同的参考强度存储对象的行为。所以我的第一个想法是使用类型字段Reference<T>并分配具有所需强度的参考。但是没有强引用的类,Reference手动扩展似乎是完全错误的方向。

另一种方法是有两个字段,一个是 a Reference,另一个是所需类型,并且只有一个集合,但 aReference强烈存储值将使代码更清晰。

0 投票
2 回答
284 浏览

ios - IOS左右强弱,结果应该是什么?并不断声明

有两个属性,如下所示

实现文件为:</p>

为什么结果不是_birthday1is (null), (null)

我发现 iOS ARC 的弱和强属性。如果self.birthDay是常量,则不会被释放。但是有[NSDate dateWithTimeIntervalSinceNow:0]

现在我想知道返回值是否为常量以及如何验证声明结果是常量和变量。