iOS在关闭视图控制器后释放内存

iOS在关闭视图控制器后释放内存,ios,objective-c,memory-management,uiviewcontroller,Ios,Objective C,Memory Management,Uiviewcontroller,我搜索了很多,但不幸的是没有找到一个类似的,可以解决我的问题 例如,我没有使用委托,所以强委托指针不是问题 有一个UItabbarcontroller作为根视图控制器。加载该选项卡栏控制器后,它将在顶部显示一个视图控制器(modally)。视图控制器完成其工作后,请关闭视图控制器并返回TabBarController。原因是视图控制器中有一个消耗了大约10mb内存的背景图像 我在-ViewDidDisplay中显示视图控制器: - (void)viewWillAppear:(BOOL)anima

我搜索了很多,但不幸的是没有找到一个类似的,可以解决我的问题

例如,我没有使用委托,所以强委托指针不是问题

有一个UItabbarcontroller作为根视图控制器。加载该选项卡栏控制器后,它将在顶部显示一个视图控制器(modally)。视图控制器完成其工作后,请关闭视图控制器并返回TabBarController。原因是视图控制器中有一个消耗了大约10mb内存的背景图像

我在-ViewDidDisplay中显示视图控制器:

- (void)viewWillAppear:(BOOL)animated
{
    NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
    if ([userDefaults valueForKey:@"token"]==NULL) {
        UIStoryboard *storyboard = [self storyboard];
        UINavigationController *navController = [storyboard instantiateViewControllerWithIdentifier:@"SignInNavigationController"];

        [self presentViewController:navController animated:NO completion:nil];
    }
}
该导航控制器是该视图控制器的根控制器。(我希望这不是问题所在)

这就是我关闭视图控制器的方式:

[self.navigationController dismissViewControllerAnimated:YES completion:nil];
它们之间没有其他联系

编辑: 有人问我这个问题是什么,所以我的问题是,既然视图控制器被关闭了,那么它的内存应该被收集回来,对吗?或者,如果没有,有没有办法收回


(当然是弧形)

这取决于加载图像的方式。如果您在
UIImage
上使用
imageNamed:
,您加载的图像实际上会被缓存。如果图像是通过XIB或故事板加载的,也是如此。假设没有其他保留周期问题,则在发布内存不足通知时,缓存将被清除


如果您希望更加主动,请不要通过XIB、故事板或
UIImage
上的
imageNamed:
API加载图像。相反,请使用
imageWithContentsOfFile:
API。

这取决于您如何加载图像。如果您在
UIImage
上使用
imageNamed:
,您加载的图像实际上会被缓存。如果图像是通过XIB或故事板加载的,也是如此。假设没有其他保留周期问题,则在发布内存不足通知时,缓存将被清除


如果您希望更加主动,请不要通过XIB、故事板或
UIImage
上的
imageNamed:
API加载图像。相反,请使用
imageWithContentsOfFile:
API。

这取决于您如何加载图像。如果您在
UIImage
上使用
imageNamed:
,您加载的图像实际上会被缓存。如果图像是通过XIB或故事板加载的,也是如此。假设没有其他保留周期问题,则在发布内存不足通知时,缓存将被清除


如果您希望更加主动,请不要通过XIB、故事板或
UIImage
上的
imageNamed:
API加载图像。相反,请使用
imageWithContentsOfFile:
API。

这取决于您如何加载图像。如果您在
UIImage
上使用
imageNamed:
,您加载的图像实际上会被缓存。如果图像是通过XIB或故事板加载的,也是如此。假设没有其他保留周期问题,则在发布内存不足通知时,缓存将被清除


如果您希望更加主动,请不要通过XIB、故事板或
UIImage
上的
imageNamed:
API加载图像。相反,请使用
imageWithContentsOfFile:
API.

,问题是什么?SignenNavigationController从未解除分配?或者只是图像从未被释放?您可以将-(void)dealloc方法添加到SignenNavigationController中,并在其中放置一个断点,以查明这是否真的是您的问题!问题是什么?SignenNavigationController从未解除分配?或者只是图像从未被释放?您可以将-(void)dealloc方法添加到SignenNavigationController中,并在其中放置一个断点,以查明这是否真的是您的问题!问题是什么?SignenNavigationController从未解除分配?或者只是图像从未被释放?您可以将-(void)dealloc方法添加到SignenNavigationController中,并在其中放置一个断点,以查明这是否真的是您的问题!问题是什么?SignenNavigationController从未解除分配?或者只是图像从未被释放?您可以将-(void)dealloc方法添加到SignenNavigationController中,并在其中放置一个断点,以查明这是否真的是您的问题!单据同意-:单据同意-:单据同意-:单据同意-: