我正在尝试将加速度计与Monotouch一起使用,但是MotionManager遇到了问题。
更新将在2-3秒后停止发送。

这是代码。 (一切都在我的主要UIView的构造函数中创建)。

CMMotionManager motionManager = new CMMotionManager();
motionManager.AccelerometerUpdateInterval = 0.5;
motionManager
    .StartAccelerometerUpdates(NSOperationQueue.CurrentQueue,
        delegate(CMAccelerometerData data, NSError error)
{
    myLabel.Text = data.Acceleration.X.ToString("0.0000");
});

使用UIAccelerometer,它可以正常工作:
UIAccelerometer acc = UIAccelerometer.SharedAccelerometer;
acc.UpdateInterval = 0.5;
acc.Acceleration += delegate(object sender, UIAccelerometerEventArgs e)
{
    myLabel.Text = e.Acceleration.X.ToString("0.0000");
};

任何想法?

最佳答案

没有足够的源代码来查看是否保留对CMMotionManager实例的引用。否则,GC可能会丢弃它,这将停止任何更新。

相比之下,您在创建自己的UIAccelerometer(可能是)时使用的是共享的 CMMotionManager(永远不会进行GC处理)。

08-05 22:23