Поддерживает ли iPhone3GS очереди блоков?
-
27-10-2019 - |
Вопрос
Я сталкиваюсь с проблемой с некоторыми из моих кодов на 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");
}];
Решение
Это не имеет ничего общего с очередями блоков. Я полагаю, что ваша проблема заключается в том, что события движения устройства требуют как акселерометра, так и гироскопа (и могут быть запрошены с помощью -deviceMotionAvailable
), но у iPhone 3GS нет гироскопа. Таким образом, даже методы движения устройства на основе блока не будут работать для вас. Вы должны посмотреть, достаточно ли только акселерометр только для ваших нужд; В противном случае вам придется ограничить ваше приложение, требующим гироскопа.