Свойство acceleration объекта accelerometerData
Затем сформированная строка помещается в свойство accelerometerLabel. Но в данном случае этого нельзя сделать непосредственно, поскольку такие классы UIKit, как UILabel, как правило, нормально функционируют только в том случае, если они доступны из основного потока. А поскольку рассматриваемый здесь код будет выполняться в очереди типа NSOperationQueue, мы просто не знаем, в каком именно потоке это произойдет. Поэтому используем специальный метод perf ormSelectorOnMain Thread:withObject :waitUntilDone:, чтобы все это произошло в основном потоке.
Следует иметь в виду, что значения, получаемые от акселерометра, доступны через свойство acceleration объекта accelerometerData, передаваемого блоку в виде аргумента. Свойство acceleration относится к типу CMAcceleration, который представляет собой простую структуру, состоящую из трех значений типа float.
Сам объект accelerometerData является экземпляром класса CMAccelerometerData, который, в свою очередь, служит оболочкой для класса CMAcceleration. Если вы считаете такое изобилие классов излишним для передачи все трех значений типа float, то вы в этом не одиноки!
Завершается рассматриваемый здесь блок вызовом метода, заключенным в квадратные скобки, где мы, прежде всего, передаем этот блок. И наконец, предоставляем совершенно другую ветвь кода на тот случай, если в мобильном устройстве отсутствует акселерометр. Как упоминалось ранее, во всех выпущенных до сих пор мобильных устройствах, работающих под iOS, имеется встроенный акселерометр, но кто знает, будет ли он присутствовать в аналогичных устройствах, выпущенных впоследствии?
Как вы, вероятно, заметили, код для обработки данных от гироскопа по своей структуре аналогичен рассмотренному раньше, а отличается он лишь особенностями вызова методов и доступа к предоставляемым значениям. В силу этого сходства отпадает всякая необходимость давать подробные пояснения нашего кода.
Скомпилируйте и запустите на выполнение рассматриваемое здесь приложение на любом доступном вам мобильном устройстве, работающем под управлением системы iOS, чтобы опробовать его. Наклоняя мобильное устройство в разные стороны, вы должны заметить, как меняются показания акселерометра в каждом новом положении устройства.
- Дата: 27-01-2015, 20:12