Я использую UINavigationController
в своем приложении.И я стараюсь изо всех сил управлять распределением памяти.Все мои представления имеют метод deinit
, который вызывается / печатается всякий раз, когда выполняется unWindSegue
или navigationController.popViewController()
, если нет сильных ссылок.
При использовании performSegueWithIdentifer
и override func prepare(for segue: UIStoryboardSegue, sender: Any?)
метод deinit
НИКОГДА не вызывается / не используется.Я думаю, что это связано с тем, что я перехожу не в памяти.
Можно ли иметь условный оператор при выполнении перехода?Как только мое приложение загружено, HomeView
находится в памяти.И я также могу расслабиться, что позволяет освободить текущее представление.
У меня есть несколько просмотров, и я хочу как можно лучше управлять памятью.Можно ли peformSegueWithIdentifier
один раз и всегда раскручивать представление, когда оно находится в памяти, с помощью условного оператора?
Псевдокод:
if navigationController.hasViewInMemory() {
peformUnWindSegue()
} else {
peformSegueWithIdentifier()
}
Или существует другой способ, который позволил бы освободить память при выполнении перехода, независимо от того, находится ли представление в памяти или нет?Мое приложение основано на времени и самой последней информации, и последнее, что я хочу, это вернуть старые / избыточные данные.
Я довольно новичок в управлении памятью, поэтому прошу прощения, если этот вопрос кажется немного идиотским.