dart:在循环函数中创建的对象会被缓存还是重新创建?
Posted
技术标签:
【中文标题】dart:在循环函数中创建的对象会被缓存还是重新创建?【英文标题】:dart: Will objects created in a recurring function be cached or recreated? 【发布时间】:2020-11-16 11:54:37 【问题描述】:在CustomPaint()
的paint()
等循环函数中,如果我这样创建对象:
void paint(Canvas canvas, Size size)
....
var myObj = MyClass();
var myObj.configure(canvas, size);
....
在每帧调用paint()
时是否会重新创建此对象
或者它会被缓存直到它依赖的东西,比如屏幕尺寸改变?
【问题讨论】:
【参考方案1】:这取决于你如何实现 MyClass 构造函数。我可以看到几个选项:
MyClass 标准构造函数 - 每次调用时都会重新创建对象; MyClass 可以有 const 构造函数。然后,如果您使用const MyClass()
创建实例,它将是同一个实例。因此,并非总是可以这样做。
MyClass 可以有默认的工厂构造函数。这样,您可以根据您的要求在 MyClass 本身内部实现“缓存”。示例是“单例” - 您将始终拥有单个实例。例如,请参见此处:How do you build a Singleton in Dart?
还请注意,如果 MyClass 的对象是轻量级的,则可能不需要优化:Dart 通常擅长创建大量小对象并进行垃圾收集。
【讨论】:
以上是关于dart:在循环函数中创建的对象会被缓存还是重新创建?的主要内容,如果未能解决你的问题,请参考以下文章
你如何调用在javascript中的数组中创建的对象的函数?
为啥你不能命名一个在函数中创建的对象,与它在 Python 中的类名完全相同?