最初,我在类中实例化了
date01
对象,但有时尽管输入发生了变化,结果仍然保留。为了解决这个问题,我将类 AjtDateUtils
的对象实例化移动到 onPressed
或更准确地说移动到 setState
,如下所示:
onPressed: () {
setState(() {
AjtDateUtils date01 = AjtDateUtils();
result =
date01.function_call(firstController.text);
});
},
child: const Text('Compute'))
现在,我很好奇这是好还是坏。这是否会导致每次按下按钮时都会增加内存使用量,或者这将由语言正确处理(在每次下一个实例化之前销毁)?或者,我是否必须实现更多代码来处理我不知道的事情?
毫无疑问,最好通过整个类来访问对象,成为类成员而不仅仅是局部变量。可以根据用例和 该对象的使用位置来做出选择。
Dart 是一种基于垃圾收集的编程语言,一旦对象被释放(该对象不再被引用),它将被破坏,例如:从内存中删除。这是操作系统管理其内存的责任。
注意:Dart 没有析构函数。
现在,你的问题是,是否必须将该对象用作局部变量,但你关心内存:
没关系。尝试在使用完该对象后清除对该对象的引用,这样它就变成了垃圾。
您可以通过将对象的引用变量设置为 null 来取消引用对象
date01 = null
result = null
注意:dart 是一种空安全和声音空安全语言。 所以 dart 分析器可能不接受空值。
如果是这样,你可以将一个dispose方法作为想要成为垃圾的对象的成员方法。
并且该 dispose 方法应终止该对象的操作(关闭连接、关闭文件等)并尝试将类属性设置为 null 或虚拟值。
void dispose()
{
// terminate ops
//free the attributes
}
希望对您有帮助。