Нераспознанная ошибка селектора при реализации действия valueChanged из UISlider

У меня очень простой подкласс из UIViewController :

@interface RoastChickenViewController : UIViewController {
    IBOutlet UISlider *weightSlider;    
}

@property (nonatomic,retain) UILabel *cookingTimeLabel;
- (void) weightValueHasChanged:(id)sender;
@end

В моем файле xib установлен RoastChickenViewController как это тип владельца файла, и weightSlider подключен, а действие 'valueChanged' связано с weightValuHasChanged: .

Проблема в том, что как только я касаюсь ползунка (симулятора или устройства), я получаю:

2010-08-21 20:26:07.688 CookIt1[26682:207] -[NSCFString weightValueHasChanged:]: unrecognized selector sent to instance 0x59215e0
2010-08-21 20:26:07.690 CookIt1[26682:207] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[NSCFString weightValueHasChanged:]: unrecognized selector sent to instance 0x59215e0'
*** Call stack at first throw:
(
    0   CoreFoundation                      0x02395919 __exceptionPreprocess + 185
    1   libobjc.A.dylib                     0x024e35de objc_exception_throw + 47
    2   CoreFoundation                      0x0239742b -[NSObject(NSObject) doesNotRecognizeSelector:] + 187
    3   CoreFoundation                      0x02307116 ___forwarding___ + 966
    4   CoreFoundation                      0x02306cd2 _CF_forwarding_prep_0 + 50
    5   UIKit                               0x002b9e14 -[UIApplication sendAction:to:from:forEvent:] + 119
    6   UIKit                               0x003436c8 -[UIControl sendAction:to:forEvent:] + 67
    7   UIKit                               0x00345b4a -[UIControl(Internal) _sendActionsForEvents:withEvent:] + 527
    8   UIKit                               0x003c23ac -[UISlider beginTrackingWithTouch:withEvent:] + 731

Немного истории, У меня на самом деле была эта работа с использованием прямого подкласса UIView. Мне удалось разбить его при преобразовании из UIView в UIViewController, который, как мне кажется, является более естественным способом реализации простого поведения, подобного этому. пропал.

1
задан Singleton 24 December 2010 в 10:44
поделиться

2 ответа

Такая ошибка (когда объект, принимающий сообщение, имеет совершенно другой тип, чем ожидалось) часто возникает, когда объект-приемник по какой-то причине был деаллоцирован и его адрес в памяти теперь занят каким-то другим объектом.

Поэтому необходимо проверить, все ли в порядке с управлением памятью вашего контроллера.

1
ответ дан 2 September 2019 в 21:56
поделиться

Похоже, вы вызываете weightValueHasChanged на NSCFString. Это почти наверняка не то, что вам нужно! Либо ваши соединения в IB нарушены, либо вы явно отправляете weightValueHasChanged экземпляру NSCFString.

1
ответ дан 2 September 2019 в 21:56
поделиться