我刚刚消除了我的项目的泄漏,但在“GeneralBlock-0”类别下仍有数千个对象。净分配的数量是巨大的(在我输入时它接近一百万),但它们都不是泄漏,而且它们的大小都不大于 0 字节。
更新和编辑:
QuartzCore 负责所有有问题的对象。
负责的调用者是(按游戏循环每次迭代的执行顺序:
-[CALayer setPosition:]
x_hash_table_new_ // x2
hash_table_modify
-[CALayer setPosition:] // x9
-[CALayer(CALayerPrivate)_copyRenderLayer:flags:] //x13
在设备上运行时,在 GeneralBlock-64、128、256 等下分配 48 字节大小的对象,具有与上述相同的属性。这是不可接受的,因为它显然会导致显着减速。这是我的项目中的问题被追踪到的代码:
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 是一种类型,并且会在代码块的末尾被释放。为什么会占用我的记忆?如果归根结底,我会将我保存在仪器中的跟踪文件上传给任何感兴趣的人,但我很确定我已经涵盖了所有内容。