我的项目是制作Checker土耳其游戏
我制作了2个班级和单元格
在Cell.h中
#import <Foundation/Foundation.h>
@interface Cell : NSObject
{
int number;
char checker;
}
@property (nonatomic ) int number;
@property (nonatomic ) char checker;
@end
并在Cell.m中
#import "Cell.h"
@implementation Cell
-(void)Cell{
checker=' ';
number=1;
}
@end
但是在董事会上我尝试了很多方法,但没有成功 这是打印出检查器的代码
DrawCell[ 3 ].checker = 'X';
结果是旋转问号 所有这些数字都是0,我试图改变它们,但它们都是0
感谢
答案 0 :(得分:1)
显示方法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风格的数组,但在您使用小型固定大小的数组的情况下,后者就可以了。
其他人可能会建议你甚至不要为此而烦恼,因为你似乎只存储了两个简单的数据。在这种情况下使用结构可能是一个很好的选择,例如使用方法:
typedef struct
{
int number;
char checker;
} Cell;
Cell DrawCell[9];
和你的行
DrawCell[3].checker = 'X';
也可以工作,不需要动态内存分配,属性合成等。
HTH