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) {

    }
}
  1. Используйте метод deint и проверьте, вызывается ли он или нет после закрытия вашего viewcontroller.

  2. если вы используете какие-либо блоки или закрытие для работы, используйте [слабое Я] в стороне от своего закрытия.

  3. Вы также можете сделать ноль своим свойством / делегатом / переменной, когда viewDidDisappeared только в том случае, если после того, как нет никакого контроллера представления, будет представлен или выдвинут
Другие вопросы по тегам