一 数组引用
移除场景时,值引用数组自动销毁
class HomeScene extends eui.Component{ public arr:Array<Number> = []; public constructor() { super(); for(let i=0;i<10000;i++){ this.arr.push(i); } } }
移除场景时,对象引用数组自动销毁,Ball对象自动销毁
class HomeScene extends eui.Component{ public arr:Array<Ball> = []; public constructor() { super(); for(let i=0;i<10;i++){ let ball:Ball = new Ball(); this.arr.push(ball); this.addChild(ball); } } }
二 对象引用
移除场景时,引用对象Ball自动销毁
class HomeScene extends eui.Component{ public ball:Ball; public constructor() { super(); this.ball = new Ball(); this.addChild(this.ball); } }
三 UI组件
移除场景时,UI组件自动销毁
class HomeScene extends eui.Component{ public btn0:eui.Button; public btn1:eui.Button; public btn2:eui.Button; public btn3:eui.Button; public btn4:eui.Button; public btn5:eui.Button; public btn6:eui.Button; public btn7:eui.Button; public btn8:eui.Button; public constructor() { super(); this.skinName = "HomeSceneSkin"; } }
四 List
移除场景时,List会自动销毁
class HomeScene extends eui.Component{ public list:eui.List; public constructor() { super(); this.skinName = "HomeSceneSkin"; this.list.itemRenderer = ListItem; this.list.dataProvider = new eui.ArrayCollection([1,2,3,4,5]); } }
五 监听
移除场景时,监听会自动移除掉,HomeScene、List有监听,仍然会被销毁
印象中有监听不会被回收,但是测试来看,不停的反复增加和移除100个场景,内存并没有增加。
class HomeScene extends eui.Component{ public list:eui.List; public constructor() { super(); this.skinName = "HomeSceneSkin"; this.list.itemRenderer = ListItem; this.list.dataProvider = new eui.ArrayCollection([1,2,3,4,5]); this.addEventListener(egret.TouchEvent.TOUCH_TAP, this.onTouchTap, this); this.addEventListener(egret.Event.REMOVED_FROM_STAGE, this.onRemove, this); this.list.addEventListener(egret.Event.CHANGE, this.onChange, this); } private onTouchTap(){ } private onRemove(){ } private onChange(){ } }
来源:https://www.cnblogs.com/gamedaybyday/p/12536362.html