【发布时间】:2010-11-12 15:35:25
【问题描述】:
我正在使用 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?
另请参阅:Copying blocks (ie: copying them to instance variables) in Objective-C
【问题讨论】:
标签: iphone cocoa-touch accelerometer release-management objective-c-blocks