我想創建自己的類來管理矩陣,但我是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
感謝您的更新答案。 –