Я предлагаю вам взглянуть на каждый из методов viewDidUnload ваших контроллеров представления. Начиная с iOS 3.0, это место, где iOS будет пытаться вернуть память, когда ваше приложение получит предупреждение о памяти.
Чтобы быть более понятным, вы должны попытаться установить все свои IBOutlets в ноль в этом методе, чтобы при вызове ваши ненужные элементы пользовательского интерфейса (ненужные, потому что в то время эти файлы пера не показывались пользователю) были очищены и вернуть выделенную память в ОС. И когда они появятся снова, они будут воссозданы методом viewDidLoad.
Пример кода:
- (void)viewDidUnload {
[super viewDidUnload];
// Release any retained subviews of the main view.
// e.g. self.myOutlet = nil;