我对Objective C很新,我在代码中遇到了很多障碍...... 我正在制作一个(非常)简单的纸牌游戏,可以在iOS上运行。所有你应该做的是抽奖卡,直到小丑被抽出,然后游戏结束。 我的应用程序在for循环结束时在大括号中崩溃,使得卡对象放入数组
这是我的Deck.m:
#import "Deck.h"
#import "Card.h"
@implementation Deck
@synthesize deckArray;
- (void)removeCard {
[deckArray removeObjectAtIndex:deckArray.count];
}
- (void)generate {
NSLog(@"Generating deck...");
NSMutableArray *deckArray = [[NSMutableArray alloc]init];
for (int i = 0; i < 14; i++) {
//Make a card
Card *card = [[Card alloc]init];
//Give it some values
card.value = i + 1;
card.suit = @"Hearts";
//Put card in array
[deckArray addObject:card];
NSLog(@"Added object (%@) to array",card);
}
for (int i = 0; i < 14; i++) {
//Make a card
Card *card = [[Card alloc]init];
//Give it some values
card.value = i + 1;
card.suit = @"Spades";
//Put card in array
[deckArray addObject:card];
NSLog(@"Added object (%@) to array",card);
}
for (int i = 0; i < 14; i++) {
//Make a card
Card *card = [[Card alloc]init];
//Give it some values
card.value = i + 1;
card.suit = @"Diamonds";
//Put card in array
[deckArray addObject:card];
NSLog(@"Added object (%@) to array",card);
}
for (int i = 0; i < 14; i++) {
//Make a card
Card *card = [[Card alloc]init];
//Give it some values
card.value = i + 1;
card.suit = @"Clubs";
//Put card in array
[deckArray addObject:card];
NSLog(@"Added object (%@) to array",card);
} //Crashes on this line: Thread 1: Breakpoint 2.1
NSLog(@"Generated deck");
}
- (Card *)topCard {
return [deckArray objectAtIndex:deckArray.count];
}
@end
我很确定这是世界上最明显的事情,但同样,我在编程方面还很陌生
提前谢谢!
答案 0 :(得分:0)
我可以在两种方法中看到问题:removeCard和topCard。 您尝试访问超出范围的对象:
[deckArray objectAtIndex:deckArray.count]
如果数组中有5个项目,则deckArray.count返回5但最后一个索引为4(数组索引为零),因此您必须将对deckArray.count的调用替换为deckArray.count-1。
- (Card *)topCard {
return [deckArray objectAtIndex:deckArray.count-1];
}
在removeCard方法中也这样做。
答案 1 :(得分:0)
这一行:NSMutableArray *deckArray = [[NSMutableArray alloc]init];
您已在头文件(.h)中声明了deckArray。
你应该这样做:deckArray = [[NSMutableArray alloc] init];
答案 2 :(得分:0)
正如Crash日志中所说,我的'删除卡'方法带走了一个不存在的对象,因为数组是从零开始的。另外,我将self.
放在deckArray
前面似乎有所帮助。在发布这个问题之前我应该学习更多的Obj-C,所以我向你道歉。 .count - 1
也对其他方法有所帮助。