приложение ios падает при создании снимка экрана из-за скачка памяти - PullRequest
0 голосов
/ 21 ноября 2019

У меня есть приложение с несколькими контроллерами представления и контроллерами навигации. Если я переключаюсь между двумя контроллерами представления примерно 10 раз, а затем делаю снимок экрана с моего iphone, приложение зависает, объем памяти увеличивается до 1 ГБ, а затем падает. Если я сделаю снимок экрана после 4-5 переключений между экранами, приложение не падает при создании снимка экрана. Я подозреваю, что мое приложение создает несколько экземпляров контроллеров представления, и я не нашел способа освободить их. Во всяком случае, если вы могли бы дать мне какой-либо совет, это будет высоко ценится. В моем примере я представляю два контроллера вида следующим образом:

let storyBoard : UIStoryboard = UIStoryboard(name: "Main", bundle:nil)
let nextViewController = storyBoard.instantiateViewController(withIdentifier: "comanda")
let first = storyBoard.instantiateInitialViewController()
self.present(nextViewController, animated:true, completion:nil)

и

let storyBoard : UIStoryboard = UIStoryboard(name: "Main", bundle:nil)
let nextViewController = storyBoard.instantiateViewController(withIdentifier: "meniuControl4") as! SideMenuController
self.present(nextViewController, animated:true, completion:nil)

Ответы [ 2 ]

1 голос
/ 21 ноября 2019

Если вы вызываете вышеуказанный код из каждого из двух контроллеров представления, то вы никогда не отклоняете ни один из них, вы просто продолжаете представлять один поверх другого, который добавляет в память.

Я не знаю, как обстоят дела с вашим приложением, но если вы представляете контроллер представления, используя present(_:animated:completion:), то вам нужно вызвать dismiss(animated:completion:) на каком-то этапе из этого контроллера представления, чтобы перейти назад. Если вы вызываете present(_:animated:completion:) изнутри, чтобы перейти к другому контроллеру представления и продолжаете делать это, то вы просто продолжаете добавлять контроллеры представления друг на друга, как колоду карт.

0 голосов
/ 22 ноября 2019

Спасибо за помощь. Мне удалось решить проблему с помощью команды dismiss при возврате на один шаг и размотки segues при возврате на главный экран. Теперь приложение не падает, когда я делаю скриншот, независимо от того, сколько венчурных капиталистов я прохожу и возвращаюсь.

...