J'ai une classe personnalisée:NSMutableArray avec des objets personnalisés?
@interface Player : NSObject {
NSInteger mPlayerNo;
}
-(id) initWithNum:(NSInteger) playerNum;
@implementation Player
-(id) initWithNum:(NSInteger) playerNum
{
if(![super init])
return nil;
...
mPlayerNo=playerNum;
return self;
}
@end
J'ai besoin du tableau des objets joueur dans l'autre classe du programme:
@interface Spec : NSObject {
NSMutableArray * mPlayers;
...
}
Donc, je suis en train de remplir mPlayers arr dans la méthode init la classe Spec comme ceci:
- (id)init {
if(![super init])
return nil;
NSMutableArray * _array=[[NSMutableArray alloc] init];
mPlayers=_array;
[_array release];
Player * _player=[[[Player alloc] initWithNum:(NSInteger)1]autorelease];
[mPlayers addObject:_player]; // crashes with EXC_BAD_ACCESS
Cela ne fonctionne pas. Mais si je change
NSMutableArray * _array=[[NSMutableArray alloc] init];
mPlayers=_array;
[_array release];
avec
mPlayers=[[NSMutableArray array]retain];
Tout fonctionne très bien. C'est quelque chose d'étrange pour moi. S'il vous plaît, aidez-nous à comprendre le problème avec alloc init.