Один из моих UIViewController
имеет несколько контроллеров детского вида. Они встроены в построитель интерфейсов, перетащив NSObject
в раздел «Объекты» слева, а затем введите в свой собственный SpecialViewController
«Пользовательский класс». С помощью этой настройки, после viewDidLoad
, я получу свои взгляды и контроллер. Рабочий процесс предлагается следующим скриншотом:Правильно ручка didReceiveMemoryWarning
И в моей реализации, у меня есть:
@interface ParentController : UIViewController
{
SpecialViewController *svc;
}
@property (nonatomic, retain) IBOutlet SpecialViewController *svc;
Как я понимаю, что во время didReceiveMemoryWarning
я должен выпустить свои собственные ресурсы. Затем установите IBOutlets
на нуль во время viewDidUnload
.
Я получаю сбой при моделировании мало памяти в имитаторе, с отладчиком задержавшись на didReceiveMemoryWarning
из SpecialViewController
(чье тело просто [super didReceiveMemoryWarning];
), с ошибкой EXC_BAD_ACCESS (code=1, address=0xe0000008)
. В это время родительский контроллер не отображается, поэтому его можно безопасно освободить.
Родительский контроллер также содержит только [super didReceiveMemoryWarning];
в didReceiveMemoryWarning
. Я пробовал niling IBOutlets
в обоих классах. Это не помогло.
Любая идея, почему это произошло?
Я ориентируюсь на iOS 4 & 5 с ARC. SpecialViewController
является подклассом UITableViewController
.
Через отслеживание, я обнаружил, что ParentController didReceiveMemoryWarning
вызывается до SpecialViewController
.
Объект деблокирования и заданный объект равны нулю. Если вы уберете память, вы должны освободить ** неиспользуемые ** ресурсы. Сначала попробуйте '[svc release]'. – Feo
@Feo, Хм ... Я использую ARC. Я освободил неиспользуемые ресурсы. Это те, которыми я управляю в своих классах, правильно? –
Вы делаете 'self.scv = nil'? – Peres