私は目標-cを学んでいます。以前に NSMutableArrays を使用したことがある人にとって、これが簡単な修正になることを願っています。
注: この質問をする前に、YouTube で 3 つのビデオを見て、5 つの記事を読みました。setValue:forKey で利用できるリソースはたくさんありますが、このシナリオには当てはまらないと思います。
三目並べゲームで行われた選択をサポートするために単純な配列を使用しようとしています。概念は単純です: - 配列は 9 つの配列ノードでインスタンス化されます - 選択が行われると、現在の文字が対応する配列ノードに配置されます - ゲームの終了を確認するメソッドは配列ノードを参照します。
問題: -各デフォルト オブジェクトNSNull
の代わりに値を設定しようとしました。@""
のエラーが発生します"Unexpected interface name 'NSNull'
。- アレイ ノードをデバッグするための NSLog ロジックが実行されない。私の仮定は、配列が取り込まれていないということです。
@synthesize lblStatus, currLetter;
@synthesize selections;
@synthesize btn0, btn1, btn2, btn3, btn4, btn5, btn6, btn7, btn8;
- (void)viewDidLoad
{
[super viewDidLoad];
[selections initWithObjects:
@"", @"", @"", @"", @"", @"", @"", @"", @"", nil];
currLetter = @"X";
[self updateTitle];
// Do any additional setup after loading the view, typically from a nib.
}
- (IBAction)takeTurn:(id)sender {
UIButton *btn = (UIButton *)sender;
if (btn.currentTitle == nil) {
[selections replaceObjectAtIndex:btn.tag withObject:currLetter];
[sender setTitle:currLetter forState:UIControlStateNormal];
[self changeTurns];
}
}
- (void)changeTurns {
if ([currLetter isEqualToString:@"X"]) {
currLetter = @"O";
} else {
currLetter = @"X";
}
for (NSString *node in selections) {
NSLog([NSString stringWithFormat:@"Node: %@", node]);
}
[self updateTitle];
}
- (void)updateTitle {
[lblStatus setText:[NSString stringWithFormat:@"%@'s Turn", currLetter]];
}
「悪いコード」と見なされるものを他に見つけた場合は、そのフィードバックも喜んで受け取ります。
どんな助けでも大歓迎です。