プロジェクトからリークを取り除き終えたばかりですが、カテゴリ「GeneralBlock-0」にはまだ何千ものオブジェクトがあります。正味の割り当ての数は屋根を通り抜けています (私が入力すると 100 万に近づいています) が、どれもリークではなく、サイズが 0 バイトを超えるものもありません。
更新と編集:
QuartzCore は、問題のあるすべてのオブジェクトに対して責任があります。
責任のある呼び出し元は次のとおりです (ゲーム ループの反復ごとの実行順:
-[CALayer setPosition:]
x_hash_table_new_ // x2
hash_table_modify
-[CALayer setPosition:] // x9
-[CALayer(CALayerPrivate)_copyRenderLayer:flags:] //x13
デバイスで実行すると、48 バイト サイズのオブジェクトが GeneralBlock-64、128、256 などの下に割り当てられ、上記と同じプロパティが割り当てられます。これは明らかに大幅な速度低下を引き起こすため、容認できません。これは、問題が追跡されている私のプロジェクトのコードです。
topRow.center = CGPointMake(topRow.center.x,topRow.center.y-PIXELS_PER_FRAME);
while (nextRow = thisTopRow.below) { //stops running when thisTopRow.below is nil
nextRow.center = CGPointMake(nextRow.center.x,nextRow.center.y-PIXELS_PER_FRAME);
if (nextRow.center.y+20 < 401 && !nextRow.userInteractionEnabled)
[nextRow enableInteraction];
thisTopRow = nextRow;
}
CGPoint は型であり、コード ブロックの最後で割り当てが解除されるという印象を受けました。なぜそれが私の記憶を独占しているのですか?結局のところ、興味のある人のためにinstrumentsに保存したトレースファイルをアップロードしますが、すべてをカバーしたと確信しています.