Память не выдается под ARC

У меня есть приложение с родительским View Controller. У него есть несколько кнопок, и когда один из них щелкнут, он представляет собой Modal 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; 

Память уменьшается с помощью этого кода, я не уверен, что изображение было выпущено, потому что в следующий раз, когда я нажимаю кнопку, память увеличивается до почти 300 мб и заканчивается из-за «давления памяти». Если VC был выпущен, он будет работать нормально, потому что он использует только 160 Мб на iPad и 65 Мб на iPhone. Кроме того, мое изображение выбирается с помощью служебных программ Xib:

IMG http://i42.tinypic.com/2z8yiva.png

И я попытался использовать инструменты Xcode и не обнаружил утечки (!), Но он показывает, что распределения растут и растут каждый раз, когда я нажимаю кнопку.

Распределение с помощью инструментов Xcode http://i43.tinypic.com/2eutv78.png

и на моем 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 ; 

Я попытался дать все подробности о моем коде, но если вам нужно что-нибудь еще, просто сообщите мне, и спасибо вам всем!

Если ваши изображения большие, см. Этот вопрос: проблема освобождения памяти, используемая UIImageViews с довольно большим изображением в UIScrollView

Подводя итог: при использовании файлов nib все назначенные изображения загружаются с использованием

 [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 может не выпускать его.

  • Замыкающие переменные не освобождаются
  • статические функции против нормальной функции класса
  • Как ARC определяет, следует ли использовать сохранение или копирование?
  • Возвращаемый объект Objective-C с атрибутом Core Foundation
  • Существует ли модернизированный способ получения слабой самооценки блоков?
  • Выделение объектно-c объектов в непрерывном фрагменте памяти
  • Объяснить, что alloc / init встречается дважды
  • - (void) dealloc Вопрос
  • Как обнаружить двойное свободное устройство?
  • Проблема с памятью или что-то еще?
  • Удалите утечку памяти из-за возврата созданной переменной
  • Давайте будем гением компьютера.