我有伊娃類:爲什麼在我調用stopDeviceMotionUpdates和startDeviceMotionUpdates之後,我的保留CMAttitude實例變爲零?
@interface myCoolClass:NSObject
{
CMAttitude *referenceAttitude;
}
我在執行有這些選擇:
- (void) startTrackingMotion
{
if (motionManager == nil) {
motionManager = [[CMMotionManager alloc] init];
motionManager.accelerometerUpdateInterval = 0.01;
motionManager.deviceMotionUpdateInterval = 0.01;
referenceAttitude = [motionManager.deviceMotion.attitude retain];
}
[motionManager startDeviceMotionUpdates];
if (referenceAttitude == nil) {
CMDeviceMotion *dm = motionManager.deviceMotion;
referenceAttitude = [dm.attitude retain];
}
}
- (void) stopTrackingMotion
{
[motionManager stopDeviceMotionUpdates];
}
我想,當我初始化運動經理採取referenceAttitude,並用它在生命應用程序。有時候,我需要跟蹤議案,其他時候我不需要。
這裏的應用流量:
- 呼叫startTrackingMotion因爲我已經準備好運動
- referenceAttitude撐保留,我用它來追蹤運動
- 我打電話stopTrackingMotion因爲我該怎麼辦非運動的東西
- 應用程序做一些其他的東西
- 我打電話startTrackingMotion再次因爲我已經準備好再次運動
此時,當我遍歷代碼時,我會遍歷「if(motionManager == nil)」循環,因爲它仍然存在。但是,每次涉及到「if(referenceAttitude == nil)」循環時,if語句都會解析爲true。
我是否保留不正確?是否調用stopDeviceMotionUpdates無我的實例嗎?
謝謝。