我想要this.dispose();
没有 StackOverflow 错误的相同效果。如何轻松处理所有变量(我有〜100)?我想删除当前屏幕并切换屏幕,所以如果我切换回来,就好像旧屏幕不存在一样。我一直在尝试各种处理当前屏幕的方法,到目前为止,手动处理该dispose()
方法似乎是最好的选择。
问问题
250 次
1 回答
3
dispose()
在大多数情况下,以方法手动处理Screen
是最好的方法,因为对于大多数资源来说,这样做是最早和最晚的时间点。有时,如果您知道在更改之前不再需要某些东西,Screen
您之前也可以这样做,但这应该只是一个特例。
至于您的 StackOverflow 错误:这不是因为您有很多变量,而是因为您正在处理的资源之间似乎存在任何类型的循环依赖关系。它可以只是两个dispose()
相互轮流的资源。一个例子:
Class A {
private B b;
public void dispose() {
b.dispose();
}
}
Class B {
private A a;
public void dispose() {
a.dispose();
}
}
一旦您调用dispose()
这两个资源之一,您将遇到无限循环并最终导致 StackOverflow,因为您的函数调用堆栈是有限的。
这也可能有两个以上的资源,可能还有另一个类 C,你可能有一个像 A -> B -> C -> A 这样的圆圈。
于 2013-10-18T03:48:05.473 回答