#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 при обновлении с более старых версий?
У кого-нибудь есть какие-либо объяснения или решения проблем, которые я перечислил выше?
Заранее спасибо 🙂