メソッドを示す実装Cell
は、コンストラクターがクラスにちなんで名付けられた C++ から来た可能性があることを示唆しています。Objective-C はこれを別の方法で行います。あなたに一致する実装@interface
は次のとおりです。
@implementation Cell
@synthesize number, checker; // implement the properties, not required in Xcode 4.4
- (id) init // the constructor
{
self = [super init]; // must invoke superclass init
if(self != nil) // check a valid object reference was returned
{
checker = ' ';
number = 1;
}
return self; // return the initialized object
}
@end
DrawCell
の静的配列を宣言しているように見えます。次のようなCell *
ものです。
Cell *DrawCell[9];
この配列にセルを割り当てる必要があります。ループでそれを行うことができます。
for(unsigned ix = 0; ix < 9; ix++)
DrawCell = [[Cell alloc] init]; // allocate & init each Cell
今あなたの行:
DrawCell[3].checker = 'X';
正常に動作するはずです。
NSArray
C スタイルの配列ではなくを使用することを提案する人もいるかもしれませんが、小さな固定サイズの配列の場合は後者で問題ありません。
他の人は、2 つの単純なデータしか格納していないように見えるため、このためのオブジェクトを気にする必要さえないと提案するかもしれません。この場合、構造体を使用するのが適切な選択です。たとえば、次のように使用します。
typedef struct
{
int number;
char checker;
} Cell;
Cell DrawCell[9];
そしてあなたのライン
DrawCell[3].checker = 'X';
も機能し、動的メモリ割り当て、プロパティ合成などは必要ありません。
HTH