相当与Objective-C的新的,但设法到目前为止从头创建一个卡的应用程序。 游戏的思想是针对PC玩一个纸牌游戏。消息发送到释放实例
在功能updatePlayerCardView我拿到小组第一的玩家已经卡和地方按钮同组的名称在屏幕上。 这一次工作得很好,但是当函数被调用第二次就失败:
- [CFString字符串挽留]:发送到释放实例0x604ac60
一些调试和研究后的消息我计算过,在发生这种情况的行是:
[cardButton的setTitle:[的NSString stringWithFormat:@ “%@(%I)”,[基组名],[播放器getCardGroupCount:组]] forState:UIControlStateNormal];
所以NSString的被释放明显,事情是我不明白的是,所有按钮都应该重新创建,那么为什么我要有一个释放的实例? 是否有更好的方式来每次更新播放器视图。从一开始就不知道按钮的数量。
-(void)updatePlayerCardView {
NSMutableArray *groups = [[[game players] objectAtIndex:0] getCardGroups];
Player *player = [game getPlayer:0];
int x = 13;
int y = 157;
for(int i = 0; i < [groups count]; i++) {
QuartetGroup *group = [groups objectAtIndex:i];
int cardGroupCount = [player getCardGroupCount:group];
if(cardGroupCount == [[game quartet] getCardsPerGroupCount]) {
}else{
UIButton *cardButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
cardButton.frame = CGRectMake(x, y, 140, 37);
cardButton.tag = i;
[cardButton setTitle:[NSString stringWithFormat:@"%@ (%i)", [group groupName],[player getCardGroupCount:group]]
forState:UIControlStateNormal];
[cardButton addTarget:self action:@selector(playerCardClicked:) forControlEvents:UIControlEventTouchUpInside];
[[self view] addSubview:cardButton];
//NSLog(@"Card group added to view %@", [group groupName]);
if(i == 2 || i == 5 || i == 8 || i == 11) {
x += 157;
y = 157;
}else{
y += 45;
}
}
}
}
groupName在类QuartetGroup中设置: – Johan 2011-01-27 15:11:17