4

我有一个控制器,其中包含一个包含对象的数组。每当我想重新加载这个数组时,我都会使用controller.set('messages', []);.

在我的浏览器中,这工作正常,不会导致浏览器崩溃。然而,在 iPad 上,应用程序会在几分钟后崩溃。在我的调试日志中,我看到了内存警告。我的猜测是对象保留在内存中,这会及时导致应用程序崩溃。(我在某处读到 iPad 上的 Safari 对 javascript 对象等有大约 10MB 的内存限制。)

这是从数组中清除数据并删除对该对象的所有引用的正确方法,以便系统可以对它进行垃圾收集吗?

4

2 回答 2

2

我猜你遇到了一些没有被删除的绑定,因此你的内存问题。您可以尝试Array像这样的内置方法之一clear可能会做正确的工作。

例如:

controller.get('messages').clear();

这样阵列将被重新使用。

如果有帮助,请告诉我。

于 2013-07-03T15:55:09.767 回答
1

您可以在 Ember 对象上调用destroy方法。

前任:

var messages = controller.get('messages');
messages.forEach(function(message) {
  message.destroy();
});
messages.clear();
于 2013-07-04T07:32:35.903 回答