我正在设计一款带有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
;)