Я сделал UINavigationViewController с контроллером представления A в качестве корневого контроллера представления, а затем нажал на контроллер представления B. Когда я имитирую предупреждение о памяти в симуляторе, вызывается только didReceiveMemoryWarning A. Конечно, я переопределил didReceiveMemoryWarning как в A, так и в B. В конце концов я решил проблему, вызвав метод B didReceiveMemoryWarning внутри класса A didReceiveMemoryWarning. Однако я не знаю, почему метод B вызывается автоматически. ViewDidUnload A и viewDidUnload B вызываются должным образом, поскольку я вызываю предупреждение при представлении контроллера модального представления из B.
Если контроллер представления B является корнем контроллера навигации, то didReceiveMemoryWarning вызывается без проблем.