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];
    }
Другие вопросы по тегам