我正在尝试在 Objective-C 中创建一个简单的 Grid 类。我创建了一个继承自 NSObject 的新 Objective-C 类。我遇到了一些麻烦。
我希望能够做这样的事情:
Grid *grid = [[Grid alloc] initWithNumRows:5 numCols:5];
int elem = grid[1][1];
但是,我知道如何创建新网格类的唯一方法是在 Grid 接口中创建 NSMutableArray 属性。
@interface Grid : NSObject
@property int numRows;
@property int numCols;
@property (strong, nonatomic) NSMutableArray *grid;
-(id) init;
-(id) initWithNumRows:(int)numRows numCols:(int)numCols;
@end
并在实施中有:
-(id) initWithNumRows:(int)numRows numCols:(int)numCols
{
if ( (self = [super init]) )
{
self.numRows = numRows;
self.numCols = numCols;
self.grid = [[NSMutableArray alloc] init];
for (int k = 0; k < numRows; ++ k)
{
NSMutableArray* subArr = [[NSMutableArray alloc] init ];
for (int s = 0; s < numCols; ++ s)
{
[subArr addObject:@0];
}
[self.grid addObject:subArr];
}
}
return self;
}
但是,这意味着如果我想使用括号表示法,我必须这样做:
Grid *myG = [[Grid alloc] initWithNumRows:5 numCols:5];
NSMutableArray *grid = myG.grid;
int elem = grid[1][1];
这似乎很麻烦,我觉得我错过了一些东西。有没有一种方法可以在 init 中返回 NSMutableArray 网格?
谢谢