Я использую SpriteKit для создания анимаций в UICollectionViewCell's в UICollectionView. На сцене есть один спрайт, который я оживляю, используя SKAction. ContentView каждой ячейки имеет собственный SKView/SKScene. Я сталкиваюсь с утечкой памяти. Когда я смотрю на это в инструменте Allocations Instrument в Xcode 6.3, я вижу, что с каждой новой ячейкой выделяется пара> 1 Мбайт, одна из которых относится к «SKView set_context», другая относится к allocateWCMemory GLEngine ».Утечка памяти с помощью SpriteKit в коллекции View Cells
Внутри каждого UICollectionViewCell, это довольно стандартный материал. Я создаю другие (не связанные с анимацией) подпрограммы UIView и добавляя их в contentView.
Одна вещь, которая нечетна и, возможно, связана с тем, что я не получаю метод deinit UICollectionViewCell-х последовательно называется.
Мысли?
Обновления:
1) Это похоже на анимацию и не столько на представления коллекции. Если я просто отключу часть анимации кода, я, похоже, не получаю утечку памяти. Или, по крайней мере, не так много утечки памяти. В этом случае SKScene/SKView по-прежнему получают выделение (на ячейку коллекции), но я просто не анимирую спрайт. Я также должен добавить, что в этом случае, когда анимация отключена, я получаю все точки останова на удалении, попадающие туда, где они должны быть удалены (например, метод UICollectionViewCell deinit).
2) Теперь я добавил анимацию, но я просто делаю один цикл через нее. Я делал повторные анимации (ту же анимацию, просто повторяющуюся, контролируемую таймером). Когда я делаю это только один раз и останавливаюсь, нет утечки памяти. Итак, проблема, похоже, связана с моими повторными анимациями.
Итак, у каждой ячейки есть SKView/SkScene? Sprite Kit действительно не поддерживает несколько экземпляров Scenes. Должен быть лучший способ реализовать то, что вы пытаетесь сделать. –
Спасибо @Epic Byte. Можете ли вы показать мне документ Apple, указывающий, что несколько экземпляров Scene не поддерживаются? –
@EpicByte, поэтому, если бы я хотел использовать SpriteKit и UICollectionView, например, для игры Tic-Tac-Toe, это было бы невозможно? Я хочу иметь один спрайт в своем «UICollectionViewCell» –