3

我正在查看 js-interop 库(http://www.dartlang.org/articles/js-dart-interop/)和(http://dart-lang.github.com/js-interop/docs/ js/回调.html )。我想使用new Callback.many. 它说我必须确保调用,dispose()否则我可能会出现内存泄漏。确保dispose()在我的页面卸载时被调用的最佳方法是什么?

4

1 回答 1

1

当您的页面被卸载时,您实际上并不需要显式地处理回调。浏览器应该将它们作为页面中使用的其他 javascript 变量进行清理。

当您知道将不再使用回调时,应该使用dispose() 。这就像删除对未使用对象的引用以允许对其进行垃圾收集。

从技术上讲,所有回调都在 Map 中引用,以允许 js 和 dart 之间进行通信。因此,即使您的代码不保留回调的引用,它也不会被垃圾收集。调用dispose()将删除该引用并使回调免费被垃圾收集。

于 2013-02-05T20:39:38.930 回答