28得票8回答
带有弱引用值的HashMap

我正在为持久存储的对象实现一个缓存。思路如下: getObjectFromPersistence(long id); ///需要约3秒 getObjectFromCache(long id) //立即返回 并且有一个方法:getObject(long id),其伪代码如下:synch...

28得票4回答
为什么我的弱引用在强引用消失之后就被清除了?

我有点固执,但我想要很好地理解弱引用和强引用,这就是为什么我再次向你请教的原因。 考虑以下情况:__weak NSString* mySecondPointer = myText; NSLog(@"myText: %@", myText); 结果是myText:(null),这很显然——...

28得票9回答
.NET中的弱事件?

如果对象A监听对象B的事件,那么对象B会让对象A保持活动状态。 是否有标准的实现弱事件的方法可以避免这种情况发生? 我知道WPF有一些机制,但我正在寻找与WPF无关的解决方案。 我猜想解决方法应该在某个地方使用弱引用。

27得票3回答
事件如何在C#中引起内存泄漏,弱引用又如何帮助缓解这种情况?

我所知道的在C#中引起非意识性内存泄漏的两种方法: 未处置实现了IDisposable的资源。 错误地引用和取消引用事件。 我不太理解第二点。如果源对象的生命周期比监听器长,当没有其他引用时监听器不再需要事件,使用普通的.NET事件会导致内存泄漏:源对象会将监听器对象持有在内存中,而这...

27得票2回答
使用__block和__weak

我已经阅读了这篇帖子:什么是“__block”关键字?,讨论了__block的用途,但有一个回答让我感到困惑。它说__block用于避免保留循环,但在它下面的评论中让我不确定。 我像这样使用它: self.someProperty = x; //where x is some object ...

27得票1回答
在C#中是否可能创建一个真正的弱键字典?

我正在尝试为C#创建一个真正的WeakKeyedDictionary<,>,但是我遇到了困难。 我意识到这是一个非平凡的任务,但似乎无法声明一个WeakKeyedKeyValuePair<,>(仅在键可达时GC才会跟随值引用),因此看起来似乎不可能。 我看到两个主要问题...

25得票3回答
内部闭包的捕获列表是否需要重新声明`self`为`weak`或`unowned`?

如果我将一个闭包传递给一个函数,像这样: someFunctionWithTrailingClosure { [weak self] in anotherFunctionWithTrailingClosure { [weak self] in self?.doSo...

25得票6回答
使用objc_setAssociatedObject实现弱引用

我知道OBJC_ASSOCIATION_ASSIGN存在,但如果目标对象被dealloced,它会将引用清零吗?还是像过去一样,需要将该引用赋值为nil,否则我们将面临错误访问的风险?

25得票1回答
位图、位图.recycle()、弱引用和垃圾回收

据我所知,在Android上,建议将Bitmap对象作为WeakReferences引用,以避免内存泄漏。当没有保留位图对象的硬引用时,垃圾收集器会自动收集它。 现在,如果我理解正确,必须始终调用Bitmap.recycle()方法才能释放位图。我认为这是因为Bitmap对象有特殊的内存管理...

25得票4回答
在CLR中是否有一种实现WeakList或WeakCollection(类似于WeakReference)的方法?

使用 List<WeakReference> 不能满足我的要求。我希望 WeakReferences 在它们引用的对象被垃圾回收时能够自动从列表中 移除。 ConditionalWeakTable<TKey,TValue> 也无法满足我的要求,因为尽管其键和值是弱引用...