我有一个班级说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
请建议正确的初始化语法。我每次尝试初始化时都会遇到各种错误。
答案 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