SCNView вызывает утечку памяти, когда его контроллер представления контейнера уволен - PullRequest
0 голосов
/ 18 января 2019

Я использую SCNView в нескольких контроллерах представления в моем приложении, чтобы показать некоторый 3D-контент. Проблема в том, что когда я закрываю контроллер представления, содержащий SCNView, я получаю утечку памяти в соответствии с инструментом графика памяти XCodes. Сам SCNView не включен ни в один цикл сохранения, только объекты фреймворка из Foundation, CoreFoundation и т. д. и несколько объектов SCNKit, таких как C3DImage и C3DTexture.

Проблема может быть воссоздана в простом приложении следующим образом:

  • Создайте новый проект в XCode и выберите шаблон Game

  • Создайте новый контроллер вида и установите его в качестве экрана запуска

  • Добавьте кнопку UIB к новому контроллеру представления и соедините его с Segue, чтобы показать оригинальный контроллер представления, содержащий SCNView

  • Добавьте следующий код в GameViewController.swift в метод handleTap (_ жестRecognize: UIGestureRecognizer):

    func handleTap(_ gestureRecognize: UIGestureRecognizer) {
    
    // ---- Line added
    self.dismiss(animated: true, completion: nil)
    // ----
    
    // retrieve the SCNView
    let scnView = self.view as! SCNView
    
    // check what nodes are tapped
    
  • Запустите приложение в симуляторе и несколько раз переключайтесь между представлениями, затем отображайте отладчик графика памяти и проверяйте на утечки.

Я не могу понять, что происходит, есть кто-нибудь, кто имеет ключ?

Спасибо за любую помощь.

...