iOS, отклоняющая контроллер представления, не освобождает память
Я знаю, что это все со слабой сильной ссылкой при представлении viewController в родительском представлении... поправьте меня, пожалуйста, если я ошибаюсь
это пример того, как я это делаю
let viewHolder = viewClass()
func presentView() {
self.present(viewHolder, animated: true) {
}
}
видеть мой монитор памяти только из открытого и отклонять один и тот же вид снова и снова
weak var viewHolder = viewClass()
func presentView() {
self.present(viewHolder!, animated: true) {
}
}
но это даст мне сбой
Thread 1: Fatal error: Unexpectedly found nil while unwrapping an Optional value
и отклонить viewClass таким образом (внутри себя)
func dismissPage() {
self.dismiss(animated: true)
}
любая помощь будет оценена спасибо
2 ответа
Проблема может быть не в viewClass
, Вы декларируете let viewHolder = viewClass()
в вашем начальном классе. Поэтому, когда вы отклоняете контроллер, эта переменная все еще существует. Вам нужно сохранить ссылку на это? Если нет, вы можете легко выделить его, когда необходимо отобразить, и когда вы отклоните его, память будет освобождена:
func presentView() {
// instead of saving viewHolder as an instance variable, you declare it locally
let viewHolder = viewClass()
self.present(viewHolder, animated: true) {
}
}
Используйте метод deint и проверьте, вызывается ли он или нет после закрытия вашего viewcontroller.
если вы используете какие-либо блоки или закрытие для работы, используйте [слабое Я] в стороне от своего закрытия.
- Вы также можете сделать ноль своим свойством / делегатом / переменной, когда viewDidDisappeared только в том случае, если после того, как нет никакого контроллера представления, будет представлен или выдвинут