我正在尝试用 Objective-C 为一个大学项目编写一个命令行应用程序。该项目需要矩阵操作,因此我编写了一个类来处理所有矩阵方法(加法和乘法等)。我的矩阵方法如下所示:
- (NSArray *)sumMatrices:(NSArray *)matrices
{
NSMutableArray *sum = [[NSMutableArray alloc] init];
NSInteger cols = [matrices[0][0] count];
NSInteger rows = [matrices[0] count];
for (int i = 0; i < rows; i++) {
NSMutableArray *row = [[NSMutableArray alloc] init];
for (int j = 0; j < cols; j++) {
CGFloat value = 0.0;
for (NSArray *array in matrices) {
value += [array[i][j] doubleValue];
}
[row addObject:[NSNumber numberWithDouble:value]];
}
[sum addObject:[row copy]];
row = nil;
}
return [sum copy];
}
但是这个程序有一个很大的问题,我在 iOS 上使用了 Objective-c,希望 ARC 可以毫无问题地处理我所有的内存分配和释放,但是在这种情况下,NSMutableArray
“总和”永远不会被释放,因为这种方法是在一个运行 10 次的循环中被调用(使用 RK4 对双摆进行建模),内存使用量会增加并使程序变得非常慢。
一旦此方法返回,是否有任何理由NSMutableArray
不解除分配?