Je tente d'ajouter une catégorie à NSMutableArray
pour me permettre de l'utiliser comme un tableau 2D (soutenu par le tableau 1D, avec une méthode pour convertir x & y indices en un index plat). Comme je ne suis pas autorisé à ajouter des variables d'instance à une catégorie, comment dois-je faire le suivi des nombres de lignes et de colonnes nécessaires pour calculer l'indice dans le tableau?Catégories et variables d'instance
Voici l'interface:
@interface NSMutableArray (TK2DMutableArray)
- (id) initWithColumns:(int) columns rows:(int) rows;
- (id) objectAtColumn:(int) col row:(int) row;
- (void) putObject:(id) object atColumn:(int) x Row:(int) y;
@end
Et voici la mise en œuvre:
@implementation TK2DMutableArray
- (id) initWithColumns:(int) x rows:(int) y {
self = [self initWithCapacity:x * y];
return self;
}
- (id) objectAtColumn:(int) col row:(int) row {
return [self objectAtIndex:[self indexAtColumn:col row:row]];
}
- (void) putObject:(id) object atColumn:(int) x row:(int) y {
[self replaceObjectAtIndex:[self indexAtColumn:x row:y] withObject:object];
}
- (int) indexAtColumn:(int) col row:(int) row {
return (col + (row * rows));
}
@end
I codé à l'origine il comme une sous-classe de NSMutableArray
; Je sais maintenant que c'était une erreur d'avoir lu un peu sur les grappes de classe. Le problème est là dans la dernière méthode - que dois-je faire avec rows
? Ce serait un vieil ivar si j'étais sous-classe.
Je m'attends à ce qu'on me dise de créer une nouvelle classe avec une NSMutableArray
comme propriété, mais je voulais voir s'il y avait un moyen de le faire avec les catégories en premier.
Merci beaucoup.
duplication possible de [Objective-C: Variable d'instance dans la catégorie] (http://stackoverflow.com/questions/6162589/objective-c-instance-variable-in-category) – hfossli