Ошибки выделения памяти tvOS 10?

#memory #swift3 #xcode8 #allocation #tvos10

#память #swift3 #xcode8 #распределение #tvos10

Вопрос:

Я пишу приложение tvOS, у которого возникают явные проблемы с утечкой / выделением памяти. После обновления Swift 3 и tvOS 10 я заметил существенные проблемы с памятью. Предполагается, что приложение должно работать постоянно в течение нескольких дней / недель, а с Swift 2 и tvOS 9 оно работало нормально. Теперь мое приложение работает 2-3 дня и выходит из строя. Я уже больше недели бьюсь головой о свой стол.

Я использовал инструменты для диагностики и устранения большинства (если не всех) моих утечек, но у меня все еще медленный рост использования памяти в моем приложении. Несмотря на то, что инструменты не показывают утечек, отслеживание использования памяти в XCode по-прежнему показывает медленный и устойчивый рост объема памяти. Я отслеживал распределение с помощью инструментов и обнаружил некоторые странные вещи:

1) Когда я добавляю SKCropNode в SKSpriteNode, мои постоянные байты и # быстро увеличиваются.

 var cropNode: SKCropNode!

func prepare() {

    let node = SKSpriteNode()
    node.anchorPoint = self.anchorPoint
    node.size = self.frame.size
    node.color = UIColor.black

    self.cropNode = SKCropNode()
    self.cropNode.maskNode = node
    self.addChild(self.cropNode)
}
  

2) Я добавил много-много мер для очистки всего, когда я закрываю сцену, но опять же, постоянные байты и # продолжают расти. Я использую слабые ссылки везде, где они уместны.

 func exit() {

    let fadeAction = SKAction.fadeAlpha(to: 0.0, duration: 0.35)
    self.run(fadeAction, completion: { [weak self] in

        self?.removeAllActions()
        self?.removeAllChildren()
        self?.view?.presentScene(nil)
        self?.removeFromParent()
        self?.view?.removeFromSuperView()
    })
}
  

Мои вопросы:

Кто-нибудь сталкивался с проблемами памяти в Xcode 8, Swift 3 или tvOS при обновлении с более старых версий?

У кого-нибудь есть какие-либо объяснения или решения проблем, которые я перечислил выше?

Заранее спасибо 🙂