J'ai regardé sur le web mais je ne trouve rien qui puisse aider. Ma question est: est-ce que je peux écrire le tableau de pneus [x] en tant que NSArray, si oui, quelle serait la syntaxe pour déclarer et allouer les objets d'instance de classe de pneu?Puis-je configurer le tableau de pneus ci-dessous en tant que NSArray?
@interface CarClass : NSObject {
EngineClass *engine;
TireClass *tires[4];
}
.
@implementation CarClass
- (id) init {
[super init];
NSLog(@"_init: %@", NSStringFromClass([self class]));
engine= [[EngineClass alloc] init];
tires[0]= [[TireClass alloc] init];
tires[1]= [[TireClass alloc] init];
tires[2]= [[TireClass alloc] init];
tires[3]= [[TireClass alloc] init];
return self;
}
EDIT:
ceci est ma méthode dealloc pour la CarClass
- (void) dealloc {
NSLog(@"_deal: %@", NSStringFromClass([self class]));
[engine release];
[tires release];
[super dealloc];
}
Encore un peu confus au sujet de la retenir dans le NSArray ci-dessous, si j'ajoute un supplément de [pneus retain] à le CarClass: init, les pneus ne sont pas libérés. Cependant, comme le code est maintenant les pneus libèrent avec ou sans fin retenir (ie)
tires = [[NSArray arrayWithObjects:
[[[TireClass alloc] init] autorelease],
[[[TireClass alloc] init] autorelease],
[[[TireClass alloc] init] autorelease],
[[[TireClass alloc] init] autorelease],
nil] retain];
tires = [NSArray arrayWithObjects:
[[[TireClass alloc] init] autorelease],
[[[TireClass alloc] init] autorelease],
[[[TireClass alloc] init] autorelease],
[[[TireClass alloc] init] autorelease],
nil];
FINAL EDIT: Je pensais aussi que sans autorelease sur les pneus individuels libérant enfin le NSArray dans le dealloc libérerait à la fois le tableau et les objets vers lesquels il pointe, cela ne semble pas être le cas.
acclamations -Gary-
Ai-je eu ce droit, vous n'alloc le tableau, mais plutôt les objets qu'il contient? Désolé juste d'essayer de comprendre. – fuzzygoat
Le code appelle la méthode '+ [NSArray arrayWithObjects:]', qui est une méthode pratique qui alloue automatiquement, puis libère automatiquement l'objet tableau (d'où l'appel à 'retain'). – mipadi
@mipadi pouvez-vous expliquer le bit de retenue, ai-je raison de penser que le code retient le NSArray, les objets sont ensuite auto-libérés. Juste ne sais pas ce qui se passe à la NSArray et pourquoi il est conservé? – fuzzygoat