1

我想要this.dispose();没有 StackOverflow 错误的相同效果。如何轻松处理所有变量(我有〜100)?我想删除当前屏幕并切换屏幕,所以如果我切换回来,就好像旧屏幕不存在一样。我一直在尝试各种处理当前屏幕的方法,到目前为止,手动处理该dispose()方法似乎是最好的选择。

4

1 回答 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 回答