Ios CMMotionManager块中的CABasicAnimation性能问题

Ios CMMotionManager块中的CABasicAnimation性能问题,ios,objective-c,cocoa-touch,objective-c-blocks,cabasicanimation,Ios,Objective C,Cocoa Touch,Objective C Blocks,Cabasicanimation,我有一个CMMotionManager设置,deviceMotionUpdateInterval设置为100 HZ,如下所示: motionManager = [[CMMotionManager alloc] init]; motionManager.deviceMotionUpdateInterval = 1/100.0; 我正在使用类似这样的块从陀螺仪[motionManger startDeviceMotionUpdatesToQueue:[NSOperationQueue curren

我有一个CMMotionManager设置,deviceMotionUpdateInterval设置为100 HZ,如下所示:

motionManager = [[CMMotionManager alloc] init];
motionManager.deviceMotionUpdateInterval = 1/100.0;
我正在使用类似这样的块从陀螺仪[motionManger startDeviceMotionUpdatesToQueue:[NSOperationQueue currentQueue]获取偏航值,其处理程序:^(CMDeviceMotion*运动,NSError*错误){//获取偏航值}; [motionManger startDeviceMotionUpdatesToQueue:[NSOperationQueue currentQueue] withHandler:^(CMDeviceMotion *motion, NSError *error) { //get yaw values}];

我还有一个正在同一块中设置动画的CABasicAnimation。我将每个动画的持续时间设置为0.01秒。动画是一个圆形进度条,表示设备已旋转了多少度。这在iPhone5上非常有效。然而,在iPhone4和4S等较旧的设备上,在填充进度条和设备旋转的实际度数之间有明显的延迟。基本上,如果手机快速旋转180度,则进度条的填充速度将慢得多,以到达180度点。在iphone5上的相同场景中,进度条将瞬间处于180度


我的问题是,我能做些什么来提高性能,使动画像iphone5一样平滑、即时准确?

我刚才回答了一个类似的问题


简而言之,block方法有很大的开销,您需要在选择的时间间隔手动轮询CMMotionManager。在CMMotionManager类参考中的“运动数据的定期采样”中有详细说明。

使用仪器了解发生了什么。您可能正在争夺CPU。iPhone5有一个双核CPU,所以它是真正的多线程。我猜,iPhone4无法播放动画,因为我们一直被对偏航更新块的调用所困扰。你能建议在仪器中准确监控什么吗?CPU时间?动画帧速率?是的,我想你可以做一个时间分析器,看看是什么让动画变慢了。