簡體   English   中英

內存未在ARC下釋放

[英]Memory is not released under ARC

我有一個帶有父級View Controller的應用程序。 它具有一些按鈕,當單擊其中一個按鈕時,將顯示一個模態視圖控制器(使用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;

使用此代碼,內存確實減少了,我不確定是否釋放了圖像,因為下次我按下按鈕時,內存增加到將近300mb並由於“內存壓力”而終止。 如果發布了VC,它將可以正常工作,因為它在iPad上僅使用160mb,在iPhone上僅使用65mb。 另外,我的圖像是通過Xib實用程序選擇的:

IMG

而且我嘗試使用Xcode工具,它沒有顯示任何泄漏(!),但是它確實表明,每當我單擊按鈕時,分配就在不斷增長。

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 ;

我試圖提供有關我的代碼的所有詳細信息,但是如果您還有其他需要,請告訴我,非常感謝!

如果您的圖像很大,請參見以下問題: 在UIScrollView中釋放具有較大圖像的UIImageViews所占用的內存問題

總結一下:使用筆尖文件時,所有分配的圖像都使用

[UIImage imageNamed]

已知會導致大量內存分配的方法,因為它總是緩存圖像。 嘗試將圖像分配給代碼中的視圖

[UIImage imageWithContentsOfFile:path];

方法(在上述問題的答案中進行了描述)。

在模態視圖控制器中:

[self dismissViewControllerAnimated:TRUE completion:Nil];

在主View控制器中先檢查它是否存在,然后再顯示它:

iPadViewController *iPadVC;

if (iPadVC == Nil)
 iPadVC = [[iPadViewController alloc] initWithNibName:nil bundle:nil];

[self presentViewController:iPadVC animated:YES completion:NULL];

聽起來iPadVC一直在范圍內,因此ARC可能不會發布它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM