Ответ, определенный благодаря указателям из dbarker , заключается в том, что методы поворота контроллера представления, включая -willRotateToInterfaceOrientation:duration:
и -willAnimateRotationToInterfaceOrientation:duration:
, не будут вызываться при перезагрузке представления после реализации по умолчанию из didReceiveMemoryWarning
выгрузил вид. Я понятия не имею, почему это будет отличаться при запуске приложения, но у меня есть обходной путь
Я установил логический ивар с именем unloadedByMemoryWarning
на YES
в didReceiveMemoryWarning
, например:
- (void) didReceiveMemoryWarning {
unloadedByMemoryWarning = YES;
[super didReceiveMemoryWarning];
}
Затем, в viewDidLoad
, если этот флаг равен true, я устанавливаю его на NO
, а затем сам вызываю методы ротации:
if (unloadedByMemoryWarning) {
unloadedByMemoryWarning = NO;
[self willRotateToInterfaceOrientation:self.interfaceOrientation duration:0];
[self willAnimateRotationToInterfaceOrientation:self.interfaceOrientation duration:0];
[self didRotateFromInterfaceOrientation:self.interfaceOrientation];
}
Что-то вроде отстранения, что я должен это сделать, но это работает, и теперь я меньше беспокоюсь о том, чтобы меня убило iOS за использование слишком большого количества памяти.