for*_*umb 2 javascript memory-leaks titanium appcelerator ios
如果我有一个简单的警告对话框,如
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;
Run Code Online (Sandbox Code Playgroud)
在一个窗口内.假设我关闭了该窗口,并且该窗口实例未分配任何变量.窗口应该是垃圾收集."垃圾对话"最终会在垃圾收集过程中被释放,还是因为我从不调用dialog.removeEventListener它会永远存在于内存中?
小智 5
在你的榜样,你就不会需要删除事件侦听器.
为了防止内存泄漏,在这种情况下你唯一需要做的就是确保你声明var dialog
而不仅仅是dialog
(你做得很好).窗口关闭时,窗口内局部范围内的所有UI元素都将从内存中删除.如果声明全局引用,则可能导致内存问题.
现在有些情况下你必须删除事件监听器,那些是自定义事件监听器.专门为Ti.App
对象添加自定义事件而不删除它们会给您带来很多麻烦.我通常不建议添加任何内容,但万一你确实需要它,你应该确保删除它,同时确保事件处理程序是一个命名函数.
归档时间: |
|
查看次数: |
796 次 |
最近记录: |