当使用unwind segue时,Dealloc不会在所有视图控制器上调用



我正在设计一款带有6个视图控制器的游戏。

我使用模态segue向前导航,使用unwind segue向后导航。

通过视图控制器的游戏流程是A -> B -> C -> D -> E -> f

当我尝试从F unwind到A时,dealloc只在B和c上被调用,这意味着每次玩游戏时所使用的内存都在不断增加。

我最初认为这个问题是由于某些东西被保留导致dealloc不在视图控制器D和E上被调用。然而,如果我设置unwind segue从F到D,则F和E都调用dealloc这似乎排除了这个问题。

我也有一个直接从视图控制器a到F的路由,当我unwind的时候,dealloc在F上被正确调用。

视图控制器F和C在a上调用相同的unwind动作,我认为这不是原因,因为我已经尝试改变它,为每个视图控制器使用唯一的unwind动作。

有什么想法是导致这一点吗?我复制了下面使用的一些代码。请让我知道其他代码(如果有的话)将有助于解决这个问题。如有任何帮助,我将不胜感激。

Unwind动作如下:

- (IBAction)unwindToMainMenu:(UIStoryboardSegue *)unwindSegue
{}

调用触发unwind segue从视图控制器F到A:

[self performSegueWithIdentifier:@"ReturnToMainMenu" sender:self];

根据您的描述,问题应该在D上。可能D 是从其他人保留的,所以当你从F直接到A时,没有被释放未被释放,继续保留 E, F保留

所以,集中精力在D;)

最新更新