循环清理对象(只有android)

时间:2016-01-29 13:24:17

标签: android appcelerator destroy appcelerator-titanium

我在Android上遇到了一个奇怪的错误,我的页面视图有侧视图(SIDE)加载内容视图(FILTER),而这个过滤器视图加载另一个视图(FORM)和最后一个加载一些视图(TEXT)

$.page.cleanup = function() {
    side.cleanup();
};

console.log('ADD :: SIDE');
$.side.cleanup = function() {
    console.log('DESTROY :: SIDE');
    filter.cleanup();
    //remove listeners, and null objects
};

console.log('ADD :: FILTER');
$.filter.cleanup = function() {
    console.log('DESTROY :: FILTER');
    form.cleanup();
    //remove listeners, and null objects
};

console.log('ADD :: FORM');
$.form.cleanup = function() {
    console.log('DESTROY :: FORM');
    for(var i in text) text[i].cleanup();
    //remove listeners, and null objects
};

console.log('ADD :: TEXT');
$.text.cleanup = function() {
    console.log('DESTROY :: TEXT');
    //remove listeners, and null objects
};

当我关闭活动页面视图时,这会调用子视图的清理功能:

[INFO] :   CLEANUP :: SIDE
[INFO] :   CLEANUP :: FILTER
[INFO] :   CLEANUP :: FORM
[INFO] :   CLEANUP :: TEXT
[INFO] :   CLEANUP :: TEXT

但是当我在android中运行清理函数时,它启动一个循环,在iOS上工作正常:

的iOS:

[INFO] :   CLEANUP :: SIDE
[INFO] :   CLEANUP :: FILTER
[INFO] :   CLEANUP :: FORM
[INFO] :   CLEANUP :: TEXT
[INFO] :   CLEANUP :: TEXT
[INFO] :   CLEANUP :: FILTER
[INFO] :   CLEANUP :: FORM
[INFO] :   CLEANUP :: FILTER
[INFO] :   CLEANUP :: FORM
[INFO] :   CLEANUP :: FILTER
[INFO] :   CLEANUP :: FORM
[INFO] :   CLEANUP :: FILTER
[INFO] :   CLEANUP :: FORM
...

机器人:

DataGrid

任何想法??

1 个答案:

答案 0 :(得分:1)

我错误地用这种方式清理按钮:

for(var i in $.buttons) $.buttons[i].cleanup();

而不是:

for(var i in $.buttons.children) $.buttons.children[i].cleanup();

不知道为什么但这会在过滤视图清理事件上创建一个循环,解决了,谢谢你的回答