我想创建自己的类来管理矩阵,但我是Objective-C的新手。与内存管理概念的误解有关的错误?
矩阵类 我创建这个类来管理矩阵,将它保存在NSMutableArray
的NSMutableArray
's中。
@interface matrix : NSObject
{
NSMutableArray *grid;
// Dimensiones de la matriz.
NSUInteger num_columns;
NSUInteger num_rows;
}
我创建了一个方法来添加行,列和其他操作。该方法addRow是这样的:
-(BOOL) addRow:(NSArray *) fila
{
NSLog(@"Dentro de Añadir una Fila de una matriz.");
[grid addObject:fila];
[self checkDimensions];
return YES;
}
我使用extern
类的方法。该方法非常简单,因为我只想创建一个矩阵并将其打印出来。
-(BOOL) matrixTEST
{
NSLog(@"Dentro de Testeo de una matriz.");
// create a new instance
matrix *m = [[matrix alloc] init];
NSMutableArray *vector = [[NSMutableArray alloc] init];
[vector addObject:@"1"];
[vector addObject:@"2"];
[vector addObject:@"3"];
[m addRow:vector];
[vector removeAllObjects];
[vector addObject:@"4"];
[vector addObject:@"5"];
[vector addObject:@"6"];
[m addRow:vector];
[vector removeAllObjects];
[vector addObject:@"7"];
[vector addObject:@"8"];
[vector addObject:@"3"];
[m addRow:vector];
[vector removeAllObjects];;
// print matriz
[m imprimirMatriz];
[vector release];
return YES;
}
问题是我不知道我在做什么错,因为方法printMatrix显示错误的访问或零错误。此外,定义为包含行数和列数的变量显示奇怪的值:- Rows : 5.75753e+228 - Columns : 8.55507e-53
打印Matrix的方法。
-(void) imprimirMatriz
{
NSMutableArray *temp = [[NSMutableArray alloc] init];
// NSNumber *numero = [[NSNumber alloc] init];
NSLog(@"Dentro de imprimir matriz.");
[self printDimensions];
for(NSUInteger c = 0; c < num_rows; c++)
{
temp = [grid objectAtIndex:c];
for(NSUInteger d = 0; d < num_columns; d++)
{
NSLog(@" %3g ", [temp objectAtIndex:d]);
}
NSLog(@"\n");
}
[temp release];
}
感谢您的回答。但另一个问题。我想在数组中插入数字(float)而不是字符串。但是当我在init方法中写入某些东西时,不用@“”获取警告消息。 –
我已经更新了我的回答以容纳您的评论:) – Bendik
感谢您的更新答案。 –