Я использую push-обработчик Core Motion для обновления акселерометра:
CMAccelerometerHandler accelerometerHandler = ^ (CMAccelerometerData *accelerometerData, NSError *error) {
// handle update
};
[motionManager startAccelerometerUpdatesToQueue:[NSOperationQueue mainQueue]
withHandler:[[accelerometerHandler copy] autorelease]];
Этот код вылетает. Если я вообще не копирую блок, я получаю прерывистый сбой при приостановке / возобновлении. Если я уберу autorelease
, он будет работать нормально, но я думаю, что это приведет к утечке.
Я также пытался присвоить блок ивару и освободить его после [motionManager stopAccelerometerUpdates]
. Аварии также.
Как получается? Я всегда думал, что должен уравновесить любой copy
/ retain
с release
/ autorelease
?
См. Также: Копирование блоков (т.е. копирование их в переменные экземпляра) в Objective-C