繁体   English   中英

dart:在循环 function 中创建的对象会被缓存还是重新创建?

[英]dart: Will objects created in a recurring function be cached or recreated?

在诸如CustomPaint()paint()之类的重复函数中,如果我以这种方式创建 object :


void paint(Canvas canvas, Size size) {
    
  ....
  
  var myObj = MyClass();
  var myObj.configure(canvas, size);
 
  ....
    
}

这个 object 会在每帧调用paint()时重新创建,还是会被缓存直到它依赖于屏幕尺寸变化等某些东西?

这取决于您如何实现 MyClass 构造函数。 我可以看到几个选项:

  • MyClass 标准构造函数——然后每次调用 object 都会重新创建;
  • MyClass 可以有 const 构造函数。 然后,如果您使用const MyClass()创建实例,它将是相同的实例。 因此,并非总是可以这样做。
  • MyClass 可以有默认的工厂构造函数。 这样,您可以根据您的要求在 MyClass 本身内部实现“缓存”。 示例是“单例” - 您将始终拥有单个实例。 例如,请参见此处: 如何在 Dart 中构建 Singleton?

另请注意,如果 MyClass 的对象是轻量级的,则可能不需要优化:Dart 通常可以很好地创建许多小对象并对其进行垃圾收集。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM