1
如果我有一個窗口內的一個簡單的警告對話框如是否每個的addEventListener需要removeEventListener以防止內存泄漏在Appcelerator的
var dialog = Ti.UI.createAlertDialog({
cancel: 1,
buttonNames: ['OK'],
message: 'Here is message.',
title: 'Title'
});
dialog.addEventListener('click', function(e){
// do something
});
dialog.show();
dialog = null;
。假設我關閉了該窗口,並且該窗口實例未分配任何變量。窗戶應該被垃圾收集。在垃圾回收過程中,'對話'最終會被釋放還是因爲我從來沒有調用過dialog.removeEventListener它會永遠存在內存中?
不好意思,我想補充一件大家需要注意的事情: 看看函數名:addEventListener,它不是一個setEventListener,多次調用addEventListener會導致事件的回調監聽器被多次調用,它不會覆蓋之前添加的事件監聽器 – TheFuquan
(我非常熟悉ECMAScript和DOM,但是對於Titanium來說是新的。)什麼是「很多麻煩」(內存泄漏放在一邊)期望如果在其他情況下不刪除事件_listener_?爲什麼重要的是事件監聽器是* named *函數(Titanium是否執行函數序列化?)? – PointedEars
除了內存泄漏之外,您可以在您的應用中看到奇怪的行爲,例如觸發多次的事件,如果這些事件處理某些UI,則可能會阻塞UI線程。 - 指定的函數專門用於全局自定義事件,您可以在支持的事件上擁有匿名函數,並且在不再使用或引用UI組件時它們將被移除 –