我正在尝试在 Objective-C 中实现一个 nxn 多维整数数组,并且因为使用 NSMutableArray 似乎开销太大,我决定只使用 C 的 malloc 和 free 来实现它。我的问题是,下面的代码在 ARC Objective-C 下是否正确(没有内存泄漏)?
@interface TwoDimensionalArray
{
int **array;
int size;
}
@end
@implementation TwoDimensionalArray
- (id)initWithSize: (int)s
{
if(self = [super init])
{
size = s;
array = malloc(sizeof(int*) * size);
for(int i = 0; i < size; i++)
{
array[i] = malloc(sizeof(int) * size);
for (int j = 0; j < size; j++)
{
array[i][j] = 0;
}
}
}
return self
}
- (id)init
{
return [self initWithSize:1];
}
- (void)dealloc
{
for(int i = 0; i < size; i++)
{
free(array[i]);
array[i] = nil;
}
free(array);
array = nil;
}
@end
如果这不正确,或者如果您认为在 Objective-C 中确实有更好的方法可以在不使用 malloc 的情况下执行此操作,请告诉我。谢谢。