UICollectionView の UICollectionViewCell でアニメーションを行うために SpriteKit を使用しています。シーンには、SKAction を使用してアニメーション化する 1 つのスプライトがあります。各セルの contentView には、独自の SKView/SKScene があります。メモリリークが発生しています。Xcode 6.3 の Allocations Instrument でこれを見ると、新しいセルごとに、1 MB を超える割り当てのペアがあり、1 つは「SKView set_context」に起因し、もう 1 つは allocateWCMemory GLEngine に起因することがわかります。
各 UICollectionViewCell 内では、かなり標準的なものです。他の (アニメーションとは関係のない) UIView サブビューを作成し、それらを contentView に追加しています。
奇妙でおそらく関連していることの 1 つは、UICollectionViewCell の deinit メソッドが一貫して呼び出されないことです。
考え?
アップデート:
1) これはアニメーションに直接関係しているようで、コレクション ビューにはあまり関係していないようです。コードのアニメーション部分をオフにするだけでは、メモリ リークは発生していないようです。または、少なくともそれほど多くのメモリがリークしていません。この場合、SKScene/SKView は引き続き (コレクション ビュー セルごとに) 割り当てられますが、スプライトをアニメーション化しません。また、この場合、アニメーションを無効にすると、すべての割り当て解除ブレークポイントがヒットするはずの場所 (UICollectionViewCell deinit メソッドなど) にヒットすることも付け加えておく必要があります。
2) アニメーションを再度追加しましたが、1 サイクルだけ実行します。私は繰り返しアニメーションを行っていました(同じアニメーションを繰り返し、タイマーで制御します)。一度だけ実行して停止すると、メモリリークは発生しません。したがって、問題はアニメーションの繰り返しに起因しているようです。