我是新手,对垃圾收集对无重启插件的确切工作方式有点不知所措。
从我的关闭功能中,我目前调用了必须进行清理的所有对象。它们删除可能已设置的外部代码的任何事件处理程序,然后删除其自身的所有属性。
然后我为那里的所有对象调用delete namespace.ObjectA
。命名空间本身是我在 bootstrap.js 中创建的变量。我想知道这是否有必要,或者 Firefox 会在调用我的插件的关闭函数后从引导中删除所有全局变量.js从而从我的插件外部无法访问所有其他对象?
显然,如果关闭的原因是Firefox应用程序关闭,我不会进行任何清理。
我是否错过了清理时应该做的事情?
,无需重启插件必须在"禁用"或"卸载"时执行这些操作。
插件必须删除事件侦听器和观察者。
删除命名空间并不重要(也没有完成),命名空间是一个变量,将由 GC 完成。
此外,插件必须在其自身之外还原(而不是重置)任何更改的首选项。
正如您所说,通常不需要对Firefox应用程序关闭采取任何操作。
参考资料:
- AMO/审稿
- 人/指南/审稿 人
- Bootstrap Add-ons by K Maglione