2012-04-25 67 views
1

任何人都可以給出一個完整的例子,說明如何在qooxdoo 1.6中配置和破壞工作嗎? ,我無法在qooxdoo演示或文檔中找到任何好的示例。qooxdoo破壞,處置

感謝勸告。

回答

3

處置和銷燬在現實中是同一枚硬幣的兩面:垃圾是破壞對象的行爲。通過將__destruct()作爲onDispose()方法,它們的區別可能會變得更加清晰。作爲一個經驗法則,任何創建QX對象的類都要對其進行適當的銷燬。通常,這是類的析構函數完成的,但可能隨時發生,這取決於您的業務邏輯。

處置是通過完成(前)

this._disposeObjects("_buttonOk", "_buttonCancel"); 
this._disposeArray("_children"); 
this._disposeMap("_registry"); 

電話。有些類可能會提供銷燬方法,如qx.ui.core.Widget

+0

這非常有幫助。它清除了想法。 – 2012-04-26 08:15:23

3

如果您使用object,則不需要實施dispose。只有毀滅是必要的,而不是一切(見上抓住你應該刪除哪一個,哪一個你不需要)

它將看起來像這樣:

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」

它會自動報告(對螢火蟲例如)對象誰沒有妥善銷燬。

所以你將能夠確切地知道你應該刪除什麼,以正確的方式刪除。

而且,想象這一點,你有一個容器(複合例如,或任何東西),有5個孩子,你要清空內容,但不是容器,你應該做的那樣:

(根據容器所有兒童的父元素)

var childrenList = container.removeAll(); 
for(var i=0; i<childrenList.length; ++i){ 
    childrenList[i].dispose(); 
} 

如果只處理出於某種原因,我不知道Widget類(在框架的Qooxdoo OBJET)有時會引發錯誤。如果你只刪除所有,它不會處理兒童,但只能刪除它們。 如果你同時處理(dispose和removeAll),你將沒有問題,並妥善處理兒童。