我有一个控制器,其中包含一个包含对象的数组。
每当我想重新加载这个数组时,我都会使用controller.set('messages', []);
。
在我的浏览器中,此工作正常,不会导致浏览器崩溃。 然而,在iPad上应用程序崩溃几分钟后崩溃。在我的调试日志中,我看到了内存警告。我的猜测是对象保留在内存中,这会导致应用程序崩溃。 (我在某处读到iPad上的Safari对javascript对象等的内存限制约为10MB。)
这是从数组中清除数据的正确方法,并删除对该对象的所有引用,以便系统可以对其进行垃圾回收吗?
答案 0 :(得分:2)
我猜你正在遇到一些没有被删除的绑定,从而导致你的记忆问题。您可以尝试其中一种Array
内置方法,例如clear
,这可能是正确的工作。
例如:
controller.get('messages').clear();
这样可以重复使用数组。
如果有帮助,请告诉我。
答案 1 :(得分:1)
您可以在Ember对象上调用destroy方法。
例如:
var messages = controller.get('messages');
messages.forEach(function(message) {
message.destroy();
});
messages.clear();