Sooooo, я получаю эту ошибку:Путаница непризнанного селектор послал к экземпляру
Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[CardGameViewController matchModeSegmentedControl:]: unrecognized selector sent to instance 0x8c84da0'
Я делал кучу Googling, но я очень путать о том, что именно эта проблема. Вот весь код, содержащий все, что связано с Segmented Control (источник всех моих текущих проблем).
@interface CardGameViewController()
...
@property (nonatomic, weak) IBOutlet UISegmentedControl *matchModeSegmentedControl;
...
@end
@implementation CardGameViewController
...
- (CardMatchingGame *)game
{
self.matchModeSegmentedControl.enabled = YES;
if (!_game) {
_game = [[CardMatchingGame alloc]
initWithCardCount:[self.cardButtons count]
withDeck:[self newPlayingCardDeck]
withSegmentedControllerValue:self.gameMatchMode];
}
return _game;
}
...
- (IBAction)touchCardButton:(UIButton *)sender
{
self.matchModeSegmentedControl.enabled = NO;
int cardIndex = [self.cardButtons indexOfObject:sender];
Card *card = [self.game cardAtIndex:cardIndex];
if (!card.isChosen) {
[self.game chooseCardAtIndex:cardIndex];
[self updateUI];
[self.game compareSelectedCards:cardIndex];
[self performSelector:@selector(updateUI)
withObject:nil afterDelay:2.0];
}
}
...
- (IBAction)matchModeSegmentedControlIndexChanged:(UISegmentedControl *)sender
{
self.gameMatchMode = sender.selectedSegmentIndex;
[self.game setValueMatchMode:self.gameMatchMode];
}
Позвольте мне знать, если вам нужна дополнительная информация. Благодаря!
EDIT: Полная трассировка стека ниже ... извините за форматирование. Я просто скопировал и вставил.
2014-12-02 23:54:44.549 Matchismo[15252:60b] -[CardGameViewController
matchModeSegmentedControl:]: unrecognized selector sent to instance
0x8c454f0 (lldb) bt
* thread #1: tid = 0x1a48c4, 0x015748b9 libobjc.A.dylib`objc_exception_throw, queue = 'com.apple.main-thread',
stop reason = breakpoint 1.1
frame #0: 0x015748b9 libobjc.A.dylib`objc_exception_throw
frame #1: 0x01892243 CoreFoundation`-[NSObject(NSObject) doesNotRecognizeSelector:] + 275
frame #2: 0x017e550b CoreFoundation`___forwarding___ + 1019
frame #3: 0x017e50ee CoreFoundation`__forwarding_prep_0___ + 14
frame #4: 0x0158682b libobjc.A.dylib`-[NSObject performSelector:withObject:] + 70
frame #5: 0x002363b9 UIKit`-[UIApplication sendAction:to:from:forEvent:] + 108
frame #6: 0x00236345 UIKit`-[UIApplication sendAction:toTarget:fromSender:forEvent:] + 61
frame #7: 0x00337bd1 UIKit`-[UIControl sendAction:to:forEvent:] + 66
frame #8: 0x00337fc6 UIKit`-[UIControl _sendActionsForEvents:withEvent:] + 577
frame #9: 0x00337c06 UIKit`-[UIControl sendActionsForControlEvents:] + 48
frame #10: 0x003a6222 UIKit`-[UISegmentedControl _setSelectedSegmentIndex:notify:animate:] + 598
frame #11: 0x003a8573 UIKit`-[UISegmentedControl touchesEnded:withEvent:] + 175
frame #12: 0x00275ddd UIKit`-[UIWindow _sendTouchesForEvent:] + 852
frame #13: 0x002769d1 UIKit`-[UIWindow sendEvent:] + 1117
frame #14: 0x002485f2 UIKit`-[UIApplication sendEvent:] + 242
frame #15: 0x00232353 UIKit`_UIApplicationHandleEventQueue + 11455
frame #16: 0x0177e77f CoreFoundation`__CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 15
frame #17: 0x0177e10b CoreFoundation`__CFRunLoopDoSources0 + 235
frame #18: 0x0179b1ae CoreFoundation`__CFRunLoopRun + 910
frame #19: 0x0179a9d3 CoreFoundation`CFRunLoopRunSpecific + 467
frame #20: 0x0179a7eb CoreFoundation`CFRunLoopRunInMode + 123
frame #21: 0x037e95ee GraphicsServices`GSEventRunModal + 192
frame #22: 0x037e942b GraphicsServices`GSEventRun + 104
frame #23: 0x00234f9b UIKit`UIApplicationMain + 1225
frame #24: 0x00003edd Matchismo`main(argc=1, argv=0xbfffede4) + 141 at main.m:16 (lldb)
С Все исключения точки останова, XCode направляет меня к этому:
#import "CardGameAppDelegate.h"
int main(int argc, char * argv[])
{
@autoreleasepool {
return UIApplicationMain(argc, argv, nil, NSStringFromClass([CardGameAppDelegate class]));
}
}
Попробуйте добавить точку останова всех исключений и проверить стек вызовов. –
введите код, из которого вы вызываете этот метод. matchModeSegmentedControlIndexChanged – Dev
@OlegShulakov: стек вызовов включен в исходное сообщение. – theRenaissanceMan