我正在设计一款带有6个视角控制器的游戏。
我使用模态segues向前导航和展开segues以导航回来。
通过视图控制器的游戏流程是A - > B - > C - > D - > E - > F。
当我尝试从F放松到A时,仅在B和C上调用dealloc。这意味着每次玩游戏时使用的内存都会不断增加。
我最初认为问题是由于某些东西被保留导致dealloc不能在视图控制器D和E上被调用。但是,如果我将展开segue设置为从F到D dealloc被调用为F和E似乎排除了这个问题。
我也有一个直接从视图控制器A到F的路径。当我在这种情况下展开时,在f上正确调用dealloc。
查看控制器F和C在A上调用相同的展开操作。我认为这不是原因,因为我尝试将其更改为每个视图控制器使用唯一的展开操作。
有关导致此问题的任何想法?我复制了下面使用的一些代码。请让我知道其他代码(如果有的话)将有助于解决此问题。任何帮助将不胜感激。
展开动作如下:
- (IBAction)unwindToMainMenu:(UIStoryboardSegue *)unwindSegue
{}
调用以从视图控制器F触发展开segue到A:
[self performSegueWithIdentifier:@"ReturnToMainMenu" sender:self];
答案 0 :(得分:1)
根据您的描述,问题应该在D
上。
当您从D
直接转到F
时,可能会从其他人中保留A
,因此不会取消分配。 未被取消分配后,它会继续保留 E
,并保留F
。
所以,请专注于D
;)