我有一个应用程序与父视图控制器。它有一些按钮,当其中一个被点击时,它会显示一个Modal视图控制器(使用XIB)。我用于显示和取消Modal VC的代码是:
iPadViewController *iPadVC = [[iPadViewController alloc] initWithNibName:nil bundle:nil];
        [self presentViewController:iPadVC animated:YES completion:NULL];并驳回:
-(IBAction)Back:(id)sender{
[self.presentingViewController dismissViewControllerAnimated:YES completion:nil];
}所以问题是,当我拒绝它的时候,它不会释放任何记忆。如果我把它呈现3/4次,它就会崩溃。我正在使用ARC,从来没有遇到过类似的问题,因为我很难让ARC完成所有内存管理工作。我确实有一些背景,需要很大的空间,他们也不会被释放。我试过:
[backgroundImage removeFromSuperview];
backgroundImage=nil;使用此代码,内存确实会减少,我不确定图像是否被释放,因为下一次按下按钮时,内存会增加到将近300 to,并由于“内存压力”而终止。如果VC发布了,它就能正常工作,因为它在iPad上只使用160 VC,在iPhone上只使用65 VC。另外,我的映像是通过Xib实用程序选择的:

我试着使用Xcode仪器,它没有显示任何泄漏(!)但它确实表明,每次我点击一个按钮,分配都在增长和增长。

在我的ViewController.h上:
IBOutlet UIImageView (...);
IBOutlet UIImageView (...);
IBOutlet UILabel (...);
IBOutlet UIButton (...);
IBOutlet NSTimer (...);
IBOutlet UIImage (...);
IBOutlet UIView (...);
-(IBAction)Back:(id)sender;
@property (nonatomic, assign) int ;
@property (nonatomic) IBOutlet UIButton ;
@property (nonatomic) IBOutlet UIButton ;
@property (nonatomic) IBOutlet UIButton ;
@property (nonatomic) IBOutlet UIView ;
@property (nonatomic) IBOutlet UILabel ;我试着给出关于我的代码的所有细节,但是如果你还需要什么,请告诉我,非常感谢!
发布于 2013-12-01 09:34:53
如果你的图片很大,请看这个问题:Problem dealloc'ing memory used by UIImageViews with fairly large image in an UIScrollView
总之:当使用nib文件时,所有分配的图像都将使用
[UIImage imageNamed]方法,因为它总是缓存图像,因此它会导致巨大的内存分配。尝试将图像分配给代码中的视图。
[UIImage imageWithContentsOfFile:path];方法(在对上述问题的回答中对此进行了描述)。
发布于 2013-12-01 08:40:01
在模态视图控制器中:
[self dismissViewControllerAnimated:TRUE completion:Nil];在主视图控制器中,先检查它是否存在,然后再显示它:
iPadViewController *iPadVC;
if (iPadVC == Nil)
 iPadVC = [[iPadViewController alloc] initWithNibName:nil bundle:nil];
[self presentViewController:iPadVC animated:YES completion:NULL];听起来好像iPadVC总是在范围内,所以ARC可能不会发布它。
https://stackoverflow.com/questions/20310304
复制相似问题