在另一个类中初始化类的二维数组

时间:2011-04-04 22:53:37

标签: iphone objective-c

我有一个班级说ABC,我必须将ABC类型的二维数组初始化为另一个类。我对目标C不好。尝试了很多方法,但面临一些错误。

这是----- ABC类------

@interface ABC : NSObject{
int a;
}
@property (nonatomic, assign) int a;

@end

@implementation ABC

@synthesize a;

@end

这是另一个类说XYZ,其中ABC类需要初始化:

------ XYZ级-----

@interface XYZ : UIView {

ABC *abc[16][16];
}
@property (nonatomic, retain) ABC *abc;
@end

@implementation XYZ
@synthesize *abc[16][16];
@end

请建议正确的初始化语法。我每次尝试初始化时都会遇到各种错误。

2 个答案:

答案 0 :(得分:0)

你不能像在XYZ中那样使用带有属性的[]类型数组 - 你可以做的是创建一个NSArray或类似的容器并以这种方式创建多维数组

答案 1 :(得分:0)

如果要使用C样式数组(即ABC *abc[16][16]),则需要在XYZ类中提供访问器方法。

@class ABC;

@interface XYZ : NSObject
{
   ABC *abc[16][16];
}
- (void)setABC:(ABC *)anABC atRow:(NSUInteger)row column:(NSUInteger)column;
- (ABC *)abcAtRow:(NSUInteger)row column:(NSUInteger)column;
@end

@implementation XYZ

- (void)setABC:(ABC *)anABC atRow:(NSUInteger)row column:(NSUInteger)column
{
   [anABC retain];
   [abc[row][column] release];
   abc[row][column] = anABC;
}

- (ABC *)abcAtRow:(NSUInteger)row column:(NSUInteger)column
{
   return abc[row][column];
}

- (void)dealloc
{
   NSUInteger row, column;
   for (row = 0; row < 16; row++)
      for (column = 0; column < 16; column++)
         [self setABC:nil atRow:row column:column];

   [super dealloc];
}

@end