2010-11-26 23 views
2

Je suis en train de tester NSMutableArray et je ne comprends pas ce que je fais mal.ajouter des objets à NSMutableArray lorsqu'il est défini dans .h

Lorsque je définis "myArray" localement le [myArray addObject: @ "First line"]; fonctionne mais si je le définis dans le fichier .h il finit comme nul. J'utilise myArray pour ajouter le texte de plusieurs cellules sélectionnées dans un UITableView "didSelectRowAtIndexPath".

Quelqu'un pourrait-il expliquer ce que je fais mal?

+1

Le problème est dans votre code - vous devez coller dans la déclaration et initialisation snippits pour quelqu'un pour vous aider. –

Répondre

1

Vous venez de déclarer un NSMutableArray dans le fichier d'en-tête? Si c'est le cas, il doit toujours être initialisé quelque part dans le fichier .m. Vous pouvez le faire comme ceci:

array = [[NSMutableArray alloc] init]; 
[array addObject:@"First line"]; 
+0

Merci, ça l'a fait. BTW, je suppose que je devrais alors le libérer quand je quitte le UITableView xib? – PeterK

2

Assurez-vous que vous avez comme ceci dans votre fichier .h:

@interface YourViewController : UIViewController { 

    NSMutableArray *myArray; 
} 

@property(nonatomic, retain) NSMutableArray *myArray; 

@end 

Et dans votre fichier .m

@implementation YourViewController 


@synthesize myArray 

//make sure you release it 
- (void)dealloc { 
    [myArray release]; 
} 

/*....other code..... */ 

/*make sure it's initialised somewhere */ 
- (void)viewDidLoad { 
    [super viewDidLoad]; 
    myArray = [[NSMutableArray] alloc] init]; 
} 
@end 
+1

Merci, c'est exactement comme ça que je l'ai fait :-) – PeterK

0

En .h fichier

NSMutableArray *myArray;

Dans le fichier .m

-(void)viewDidLoad
{
[super viewDidLoad];
myArray = [[NSMutableArray] alloc] init];
[myArray addObject:@"myObject"];
}