0

我正在创建一个“加扰器”,它接收一个文本数组和一个图像数组,然后将叉积计算为推文。我担心的功能如下所示:

combinations: (->
  tweet_texts  = @get('tweet_texts')
  tweet_images = @get('tweet_images')

  # return empty array unless we have texts
  return Em.A([]) unless tweet_texts.length

  # handle the case when we don't have images
  unless tweet_images.length
    combinations  = tweet_texts.map (text) =>
      TwitterPost.create
        text : text
        newtwork_user : @get('account.twitter_handle')
    return Em.A(combinations)

  # handle texts and images
  combinations = tweet_images.map (image) =>
    tweet_texts.map (text) =>
      TwitterPost.create
        text  : text
        image : image
        network_user : @get('account.twitter_handle')
  return Em.A([].concat(combinations...))
).property('tweet_texts.@each','tweet_images.@each')

我担心的是我正在创建很多模型,而我并不真正了解 Ember 的垃圾收集。

那么,我是否有在这里创建内存泄漏的风险?

谢谢!

4

1 回答 1

1

Ember 没有实现任何类型的垃圾收集。在一些涉及 DOM 的情况下,它确实删除了对项目的引用以确保它被垃圾收集。

Ember 不会为使用 Foo.create() 创建的对象创建任何类型的全局引用。因此,当不再引用该对象并且您的浏览器决定收集它时,它将被收集。

使其成为计算属性类似于使其成为任何对象的属性。当对象不再被引用时,它将被标记为收集,属性将随之而来。

于 2015-01-21T05:47:51.187 回答