加速度センサーの更新に Core Motion のプッシュ ハンドラーを使用しています。
CMAccelerometerHandler accelerometerHandler = ^ (CMAccelerometerData *accelerometerData, NSError *error) {
// handle update
};
[motionManager startAccelerometerUpdatesToQueue:[NSOperationQueue mainQueue]
withHandler:[[accelerometerHandler copy] autorelease]];
このコードはクラッシュします。ブロックをまったくコピーしないと、一時停止/再開時に断続的にクラッシュします。外すと正常にautorelease
動作しますが、漏れが発生すると思います。
また、ブロックをivarに割り当て、後に解放しようとしました[motionManager stopAccelerometerUpdates]
。同様にクラッシュします。
どうして?copy
/retain
と / のrelease
バランスを取る必要があるといつも思っていましたautorelease
。