首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >qooxdoo析构,处置

qooxdoo析构,处置
EN

Stack Overflow用户
提问于 2012-04-25 21:14:24
回答 3查看 1.5K关注 0票数 1

谁能给出一个完整的例子,说明在qooxdoo 1.6中dispose和destruct是如何工作的?我在qooxdoo演示或文档中找不到任何好的例子。

谢谢你的建议。

EN

回答 3

Stack Overflow用户

发布于 2012-04-26 16:12:53

处置和销毁实际上是一枚硬币的两面:处置是销毁对象的行为。通过将__destruct()看作onDispose()方法,它们之间的区别可能会变得更加清晰。

根据经验,任何创建QX对象的类都要对它们的正确销毁负责。通常这是由类的析构函数完成的,但根据您的业务逻辑随时可能发生。

处理通过(例如)

代码语言:javascript
复制
this._disposeObjects("_buttonOk", "_buttonCancel");
this._disposeArray("_children");
this._disposeMap("_registry");

电话。一些类可能会提供用于销毁它们的explocit方法,如在qx.ui.core.Widget中

票数 3
EN

Stack Overflow用户

发布于 2012-05-28 05:18:47

如果您使用object,则不需要实现dispose。只需要析构,并不是所有的都需要析构(参见上面的内容,了解你应该删除哪一个,不需要删除哪个)

它看起来是这样的:

代码语言:javascript
复制
qx.Class.define("q.view.Home"),{
    extend : qx.ui.core.Widget,
    construct:function(){
        this.base(arguments);
    },
    members:{
        __qooxdoo_object:null
    },
    destruct:function(){
        this._disposeObjects("__qooxdoo_object");
    }
});

就这么简单。在内存管理链接上:这一点非常重要:"qx.disposerDebugLevel“:"2”

它将自动报告(例如,在firebug上)未正确销毁对象。

因此,你将能够确切地知道你应该删除什么,以适当的方式删除什么。

另外,想象一下,你有一个有5个孩子的容器(例如,组合,或任何东西),你想清空内容,但不想清空容器,你应该这样做:

(根据容器是所有子元素的父元素)

代码语言:javascript
复制
var childrenList = container.removeAll();
for(var i=0; i<childrenList.length; ++i){
  childrenList[i].dispose();
}

如果你只是出于某种原因处理对象,我不知道Widget类(在qooxdoo框架中)有时会引发错误。如果你只使用removeAll,它将不会处置子对象,而只会删除它们。如果同时使用(dispose和removeAll),就不会有问题,孩子也会得到正确的处理。

票数 3
EN

Stack Overflow用户

发布于 2012-04-26 14:07:09

也许qooxdoo手册中关于内存管理的文档会有所帮助:http://manual.qooxdoo.org/devel/pages/development/memory_management.html

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10316443

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档