Egret社区

事件监听释放的问题

2016-8-17 12:18
470412
1银子
当对象不再使用的时候,如果其自身有添加事件监听,绑定自身的处理方法,或者绑定其他外部对象的处理方法,会不会影响此对象的回收释放,就是想知道是否需要手动删除此对象添加的监听,按照以前的想法是只要没有其他对象对此对象有引用或者有绑定事件处理方法,就无需解绑事件的操作,不会影响此对象的回收释放。

最佳答案

查看完整内容

需要解除事件绑定,因为事件侦听本身也会包含对象的引用,导致内存泄露
分享到 :
0 人收藏

12 个回复

倒序浏览
mebius  社区管理员 | 2016-8-17 12:18:02
需要解除事件绑定,因为事件侦听本身也会包含对象的引用,导致内存泄露
lixin2628  圆转纯熟 | 2016-8-17 14:13:13
一定要手动解除。
jj229937432  圆转纯熟 | 2016-8-17 15:36:39
mebius 发表于 2016-8-17 13:53
需要解除事件绑定,因为事件侦听本身也会包含对象的引用,导致内存泄露

明白了,十分感谢。
jj229937432  圆转纯熟 | 2016-8-17 15:37:26
lixin2628 发表于 2016-8-17 14:13
一定要手动解除。

谢谢。
jj229937432  圆转纯熟 | 2016-10-9 16:28:17
mebius 发表于 2016-8-17 12:18
需要解除事件绑定,因为事件侦听本身也会包含对象的引用,导致内存泄露

如果监听绑定的是闭包匿名方法,请问如何移除。
frozen  登堂入室 | 2016-10-14 17:40:09
jj229937432 发表于 2016-10-9 16:28
如果监听绑定的是闭包匿名方法,请问如何移除。

增加事件监听,并移除自己
jj229937432  圆转纯熟 | 2016-10-20 12:31:09
frozen 发表于 2016-10-14 17:40
增加事件监听,并移除自己

您的意思是不要使用匿名事件?
frozen  登堂入室 | 2016-10-20 13:28:46
jj229937432 发表于 2016-10-20 12:31
您的意思是不要使用匿名事件?

let fn=function() {
console.log("hello");
}

this.addEventListener(xxxx, fn, this);
this.addEventListener(egret.Event.REMOVE_FROM_STAGE,
                                   function() {
                                         this.removeEventListener(xxxxx, fn, this);
                                   }, this);
frozen  登堂入室 | 2016-10-20 13:28:49
jj229937432 发表于 2016-10-20 12:31
您的意思是不要使用匿名事件?

let fn=function() {
console.log("hello");
}

this.addEventListener(xxxx, fn, this);
this.addEventListener(egret.Event.REMOVE_FROM_STAGE,
                                   function() {
                                         this.removeEventListener(xxxxx, fn, this);
                                   }, this);
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|京网文[2014]0791-191号|京ICP证150115号|Egret社区 ( 京ICP备14025619号 )

Powered by Discuz! X3.4 © 2001-2019 Comsenz Inc.

返回顶部