2015-01-19 2 views
0

Я делаю Stanford iOS7 CS193P Lecture2 домашнее задание, есть проблема, я не понимаю. Интересно, что это случается, когда я переворачиваю время sencond карты. Вот wraning LibC++ abi.dylib: оканчивающиеся неперехваченного исключением типа NSExceptioniOS Card * карта = [self.deck drawRandomCard]; Причины Thread 1: сигнал SIGABRT

#import "ViewController.h" 
#import "PlayingCardDeck.h" 
@interface ViewController() 
@property (weak, nonatomic) IBOutlet UILabel *fliplabel; 
@property(strong,nonatomic)Deck *deck; 
@property(nonatomic)int flipscount; 
@end 

@implementation ViewController 
-(void)setFlipscount:(int)flipscount 
{ 
    _flipscount=flipscount; 
    self.fliplabel.text=[NSString stringWithFormat:@"Flips: %d",self.flipscount]; 
} 

-(Deck *)deck 
{ 
    if (!_deck) 
     _deck=[self createDeck]; 
     return _deck; 

} 

-(Deck *)createDeck; 
{ 
    return [[PlayingCardDeck alloc] init]; 
} 

- (IBAction)touchCardButton:(UIButton *)sender { 
     if ([sender.currentTitle length]) { 
      [sender setBackgroundImage:[UIImage imageNamed:@"cardback"] forState:UIControlStateNormal]; 
      [sender setTitle:@"" forState:(UIControlStateNormal)]; 
     }else{ 
      Card *card=[self.deck drawRandomCard]; 
      [sender setBackgroundImage:[UIImage imageNamed:@"cardfront"] forState:UIControlStateNormal]; 
      [sender setTitle:[card contents] forState:(UIControlStateNormal)]; 
     } 


    self.flipscount++; 
} 

Если я удалить карты * карты = [self.deck drawRandomCard] в (IBAction) touchCardButton: (UIButton *) отправитель затем она отлично работает, как это произошло, как я могу это исправить, кто-то пожалуйста, помогите мне PS: Я не изменил свое имя метки

Существует моя страница ошибки:

int main(int argc, char * argv[]) { 
     @autoreleasepool { 
      return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); 
     } 
    } 
**Thread1:signal SIGABRT** 

Существует мой выход:

25 libdyld.dylib      0x000000010a412145 start + 1 
    26 ???         0x0000000000000001 0x0 + 1 
) 
libc++abi.dylib: terminating with uncaught exception of type NSException 
(lldb) 

Существует мои drawRandomCards:

-(Card *)drawRandomCard 
{ 
    Card *randomcardCard=nil; 
    unsigned index = arc4random() % [self.cards count]; 
    randomcardCard = self.cards[index]; 
    [self.cards removeObjectAtIndex:index]; 
    return randomcardCard; 
} 
+0

Показать все сообщения об ошибке. И не могли бы вы также показать, что находится в 'drawRandomCard'? – Larme

+0

@ Larme Я поставил свое сообщение об ошибке и drawRandomCard выше. – robbie

+0

Если вы перейдете на навигационную панель точки Xcode и добавьте точку останова во всех исключениях Objective-C, ошибка приведет к остановке в полезном месте, а не внутри 'main()'. Это приведет вас к реальной линии, которая вызывает проблемы. –

ответ

0

Прежде всего, установите флажок "индекс" значение в "drawRandomCard". Возможно, в массиве self.cards нет индекса, который вы получаете в

randomcardCard = self.cards[index]; 
Смежные вопросы