Egret社区
1银子
我写了两个类继承自eui.Group(LoginUI和RegisterUI)用于展示登录界面和注册界面 1.jpg 2.jpg
然后这两个类里面分别有一个按钮可以跳转到另一个类,代码如下图(红色圆圈部分)
3.jpg 4.jpg
Game.mainClass是Main.ts文档类(继承自eui.UILayer),我这种写法会造成内存泄露吗?也就是Game.mainClass.removeChild之后会不会被自动回收?

分享到 :
0 人收藏

11 个回复

倒序浏览
janus  登堂入室 | 2017-1-9 23:49:06
以前是做桌面开发的,初学白鹭H5开发才一个月,完全没有经验。。搜索了论坛里很多相关帖子还是有点迷迷糊糊的,关于这个内存回收释放的问题,是不是清除某个对象的所有引用和访问,使其在程序里没有任何办法能够获取到这个对象的实例,那么这个对象就会被自动回收,不知道我这样的理解对吗?
janus  登堂入室 | 2017-1-9 23:58:44
还有关于引用的问题,截图里LoginUI实例化了LoginLogic类,然后LoginLogic类调用LoginUI的GetChildByName获取了其中一个显示对象并赋值给了自己的一个私有成员,这算是引用吗?
placid2016  登堂入室 | 2017-1-10 09:41:00
看起来很复杂,好想知道答案啊~~
a123005  登堂入室 | 2017-1-10 09:53:26
看你每次new loginui rregisterui 只有addchile 没有removechild呢?
jayson1234  登堂入室 | 2017-1-10 10:44:39
应该会内存泄露,你这个ParentObj 我看不出来是哪个的引用,考虑到内存泄露的话  在new的话最好都要有个引用记录一下,不用的时候remove,你这样直接addChild(new class)的写法本身就有风险,
egret的回收机制应该跟flash有点类似吧,引用都清除了,系统会自己在某个时间内自动清除内存
kymean  初学乍练 | 2017-1-10 11:34:09
不管如何,不用每次都创建新的。。。
janus  登堂入室 | 2017-1-10 11:53:11
jayson1234 发表于 2017-1-10 10:44
应该会内存泄露,你这个ParentObj 我看不出来是哪个的引用,考虑到内存泄露的话  在new的话最好都要有个引 ...

ParentObj就是LoginUI或RegisterUI的引用,LoginUI和RegisterUI在实例化LoginLogic或RegisterLogic的时候会通过构造函数把自己传过去,然后保存为这个ParentObj,我在addChild之后会用removeChild将这个ParentObj从显示列表移除,但是addChild的时候没有引用直接new的,我就是担心这个会不会造成内存泄露
janus  登堂入室 | 2017-1-10 11:55:11
kymean 发表于 2017-1-10 11:34
不管如何,不用每次都创建新的。。。

如果不创建新的,那么上一次我在输入框里输入了内容,然后remove掉,之后又addChild,会不会遗留上一次remove时输入的内容?
kymean  初学乍练 | 2017-1-10 14:16:39
janus 发表于 2017-1-10 11:55
如果不创建新的,那么上一次我在输入框里输入了内容,然后remove掉,之后又addChild,会不会遗留上一次re ...

会,

单独Reset一下输入框的内容
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

劲爆消息上一条 /1 下一条

Egret官网|egret-labs|Egret顶级开发者|小黑屋|Egret社区 ( 京ICP备14025619号

Powered by Discuz! X3.2 © 2001-2016 Comsenz Inc.

返回顶部