我正在尝试让多个玩家参与卡片匹配游戏。我创建了一个名为Player的NSObject子类。 Player对象将具有名称,高分,最后分数,并且布尔值当前正在播放实例。每次在文本字段中输入新名称时,我都会尝试创建一个新的播放器。我稍后会努力存放球员。现在我只想创建一个新玩家,让用户在文本字段中输入他们的名字。并将用户的响应存储在文本字段中。以下是我的Player.m文件
#import "Player.h"
@implementation Player
-(NSString *) nameOfPlayer:(Player *)playerName{
return self.name;
}
-(void) setPlayerName:(NSString *) nameOf{
self.name = nameOf;
self.lastScore = 0;
self.highestScore = 0;
self.playing = YES;
return;
}
-(id)init{
self = [super init];
self.name = @"";
self.lastScore = 0;
self.highestScore = 0;
self.playing = YES;
return self;
}
@end
在我尝试在线寻找解决方案之前,我原本没有初始化。我对iOS编码有点新,所以我不确定如何设置构造函数(或者如果他们甚至有那些)。下面是我尝试实例化Player对象的方法:
- (IBAction)handleButtonClick:(UIButton *)sender {
Player * friend = nil;
nameText = self.nameEntryField.text;
[friend setPlayerName:nameText];
NSLog(@"%@", [friend nameOfPlayer:friend]);
}
我的应用程序在尝试setPlayerName后立即中断其线程。我有点坚持这一点,所以任何帮助将不胜感激。
答案 0 :(得分:1)
- (IBAction)handleButtonClick:(UIButton *)sender {
Player * friend = [[Player alloc] init]; // Initialize this
nameText = self.nameEntryField.text;
[friend setPlayerName:nameText];
NSLog(@"%@", [friend nameOfPlayer:friend]);
}
你做过像Player * friend = nil;
这意味着这是零对象。然后你试图在nil对象上使用方法setPlayerName:
。因为这个应用程序休息。
因此,您需要使用[[Player alloc] init]
初始化对象。
答案 1 :(得分:0)
这很令人尴尬。我不熟悉xCode IDE,并且意外地为断点选择了该行代码。在上一个答案之后,代码很好。