CoreMotion [ViewController updateReferenceAttitude:] - почему селектор не распознается?
Я новичок в CoreMotion
, Моя первая программа показывает deviceManager
изменение значений высоты тона, крена и рыскания, но сбой при попытке установить referenceAttitude
- (void)updateReferenceAttitude
{
self.refAttitude = self.manager.deviceMotion.attitude;
NSLog(@"you clicked a button that took a 3D snapshot");
}
В отладке утверждение в моем методе
[myButton addTarget:self action:@selector(updateReferenceAttitude:) forControlEvents:UIControlEventTouchUpInside];
вылетает со следующим
'NSInvalidArgumentException', reason: '-[ViewController updateReferenceAttitude:]: unrecognized selector sent to instance 0x14875a00'
Чтобы проверить это, я использую Xcode 8.3.3 с iPhone 5 C под управлением iOS 10.3.3.
Может кто-нибудь объяснить, почему это selector
не признается?
1 ответ
Решение
Проблема исправлена и имела мало общего с CoreMotion
, Метод
- (void)updateReferenceAttitude
должно быть
- (void)updateReferenceAttitude:(UIButton *(sender
Я включил UIButton
сбросить эталонное отношение, когда приложение работает, но автоматически вызывает тот же метод после ViewDidLoad
запускает.
Проблема была решена путем использования оператора для начальной ссылки вместо вызова метода.
if (self.refAttitude == nil)
{
self.refAttitude = self.manager.deviceMotion.attitude; // initial run
// [self updateReferenceAttitude];
}