J'ai cherché et n'ai pas de réponse. J'ai créé un NSMutableArray et j'obtiens une erreur EXC_BAD_ACCESS dans un endroit d'accès. Ici. Ceci est dans le fichier déclare .h:NSMutableArray accès problème
NSMutableArray *buttons;
...
@property (nonatomic, retain)NSMutableArray *buttons;
Et voici la synthèse et implimenting:
@synthesize buttons;
...
- (id)init {
self = [super init];
if(self != nil) {
buttons = [[NSMutableArray alloc] init];
}
return self;
}
...
-(void)addButtonWithImage:(Image*)image {
Image *button = image;
[buttons addObject:button];
[button release];
}
...
-(void)replaceButtonAt:(int)num with:(Image*)image {
Image *button = image;
[buttons replaceObjectAtIndex:num withObject:button]; <<===EXC_BAD_ACCESS
[button release];
}
Mais quand j'utilise ceci:
-(void)renderButton:(int)num atPoint:(CGPoint)point center:(BOOL)center{
Image *button = [buttons objectAtIndex:num];
[button renderAtPoint:point centerOfImage:center];
}
Il fonctionne
Merci, cela a fonctionné, mais je pensais depuis que j'avais stocké l'objet dans le tableau qu'il aurait un nombre de retenue de 2 et je devais l'abattre un. Ou est-ce que je stocke seulement un pointeur sur l'objet? – Danegraphics
Vous ne devriez jamais vous inquiéter de ce que le nombre de retenue est. Ce que vous devriez faire est de vous assurer de libérer tout ce que vous possédez. Puisque vous ne l'attribuez pas, ne le gardez pas ou ne le copiez pas, vous ne le possédez pas. 'buttons' le conservera, mais il sera alors de la responsabilité de' buttons' de le libérer. (Il est de votre responsabilité de libérer des «boutons», cependant, comme vous l'avez «alloué») – cobbal