Поддерживает ли iPhone3GS очереди блоков?

У меня проблема с некоторыми кодами на iPhone3GS под управлением iOS5.0

Следующий блок никогда не выполняется, даже если он отлично вызывается на iPhone4 с iOS5.0.

Оператор журнала никогда не появляется, и точка останова никогда не срабатывает. Я проверил, и диспетчер движения и очередь не равны нулю.

  [motionManager startDeviceMotionUpdatesToQueue:motionQueue withHandler:^(CMDeviceMotion *motion, NSError *error) {

            NSLog(@"motion event received");

//...
}];

Я что-то упустил или мне нужно переписать код, чтобы он работал без очередей блоков?
Спасибо за любой вклад в ussue!

Обновить:

Я проверил этот метод, и он работает:

   [motionManager startAccelerometerUpdatesToQueue:motionQueue withHandler:^(CMAccelerometerData *accelerometerData, NSError *error) {
        NSLog(@"accelerometerData event received");
    }];

1 ответ

Решение

Это не имеет ничего общего с очередями блоков. Я полагаю, что ваша проблема в том, что события движения устройства требуют как акселерометра, так и гироскопа (и могут быть запрошены с помощью -deviceMotionAvailable), но у iPhone 3GS нет гироскопа. Таким образом, даже не основанные на блоках методы перемещения устройства не будут работать для вас. Вы должны посмотреть, достаточно ли одного акселерометра для ваших нужд; в противном случае вам придется ограничить ваше приложение, чтобы потребовать гироскоп.

Другие вопросы по тегам