这是一个优化问题。
我有一个包含约500个命名构造函数的类,我需要通过列表进行访问-必须在运行时根据特定条件随机选择不同的构造函数。
构造函数的形式为:
stuff.s0 (){
<data>
<generating code>
}
列表初始化为:
var stuffList = [stuff.s0(), stuff.s1(), ...., stuff.s500()];*
这是在创建500个'stuff'实例,还是仅在我使用currentStuff = stuffList[42]
时创建的'stuff'实例?如果是前者,是否有更好的方法,因为在任何一次使用该应用程序的过程中,只有500的一小部分会被使用?
数据元素被声明为 static const ,因此无需创建实例即可访问它们,类似的东西就可以了。
而且,Dart擅长垃圾收集吗?因此, currentStuff = stuffList [14] 会将内存中的 stuff.s14 替换为 stuff.s42 ,或者是的实例stuff.s42 是否需要以某种方式标记完成?
谢谢
答案 0 :(得分:0)
将立即创建对象。
所有Dart对象都是参考值,因此分配currentValue = something;
只会将变量更改为引用其他对象。
我要做的是列出构造函数调用:
var stuffs = [
() => stuff.s0(),
() => stuff.s1(),
// ...
() => stuff.s500(),
];
,然后在我访问列表时调用该函数:
var currentValue = stuffs[5]();
在您需要它们之前,它不会创建对象,并且在您停止引用它们之后,它们也无法保持活动状态。另一方面,如果您需要两次stuffs[5]()
,则每次都会创建一个新对象。