我的应用程序启动到主屏幕,其中包含几个不同的选项,每个选项都会分段到新的ViewController。当我呈现新VC时,会分配更多内存。但是当我关闭ViewController并返回到主屏幕VC时,部分或全部新分配的内存都会存在(它会根据我们返回的VC选项而有所不同)。
使用Instruments对项目进行分析,我发现内存泄漏主要由图像数据组成。但我无法理解这一点,比如哪些图像(我对使用乐器很新,所以任何提示都会受到欢迎,如果你认为这有助于我答案)。
我最初使用模态segues,调用dismissViewController。我尝试将所有内容嵌入到NavigationController中,使用push segues调用popViewController。没有改善。
我已经浏览了类似的问题,但它们都是在3年多前的ARC之前。我正在使用ARC,所以我不能手动释放viewWillDisappear中的内容。
下面是一些代码。在rootViewController中,我有4个按钮,每个按钮都会推送一个新的ViewController:
- (IBAction)newSongButtonClicked:(id)sender
{
[self performSegueWithIdentifier:@"toNewSong" sender:sender];
}
- (IBAction)savedSongsButtonClicked:(UIButton*)sender
{
[self performSegueWithIdentifier:@"toSavedSongs" sender:sender];
}
- (IBAction)groovesButtonClicked:(id)sender
{
[self performSegueWithIdentifier:@"toGrooves" sender:sender];
}
- (IBAction)aboutButtonclicked:(id)sender
{
[self performSegueWithIdentifier:@"showAbout" sender:sender];
}
然后在这些辅助ViewControllers中,我有一个自定义的Back按钮(没有导航栏):
- (IBAction)backButtonClicked
{
//[self.presentingViewController dismissViewControllerAnimated:YES completion:nil];
[self.navigationController popViewControllerAnimated:YES];
}