Problemi nell’aggiunta di oggetti a NSMutableArray nell’objective C

Sto usando l’iPhone SDK e ho un problema a fare qualcosa di semplice. Sto cercando di aggiungere un object NSNumber a una variabile di istanza di NSMutableArray . Ho provato ad aggiungere NSNumber card a NSMutableArray viewedCardsArray , tuttavia senza interruzioni non viene aggiunto all’array. Ecco il codice.

///////////////////////////////////////////////////// // Inside the header file Class.h @interface MyViewController : UIViewController { NSMutableArray *viewedCardsArray; //snip ... } @property (nonatomic, retain) NSMutableArray *viewedCardsArray; @end ///////////////////////////////////////////////////// // Inside the methods file Class.m #import "StudyViewController.h" @implementation StudyViewController @synthesize viewedCardsArray //snip ... - (IBAction)doShowCard { //snip ... NSNumber *cardIdObject = [[NSNumber alloc] initWithInt:(int)[self.currentCard cardId]]; [viewedCardsArray addObject: cardIdObject]; [cardIdObject release]; } 

Quindi questo codice viene eseguito, e non sembra perdere (secondo lo strumento delle prestazioni di Leaks). Tuttavia, quando si passa attraverso il codice, CardIdObject non viene mai visualizzato in viewedCardsArray .

Guardando attraverso SO, so che queste domande di base sono piuttosto comuni ai neofiti di ObjC (come me), quindi scuse in anticipo!

Hai inizializzato il tuo viewedCardsArray ? Se non è necessario da qualche parte – questo di solito è fatto nel metodo init per la tua class:

 - (id)init { self = [super init]; if(self) { viewedCardsArray = [[NSMutableArray alloc] init]; } return self; } 

Quindi viene rilasciato nel metodo dealloc :

 - (void)dealloc { [viewedCardsArray release]; [super dealloc]; } 

Perspx ha delineato un modo per inizializzare l’array. Tuttavia, puoi anche usare i metodi di class forniti da NSArray:

 self. viewedCardsArray = [NSMutableArray array]; 

Questo può andare in init o altrove.

Nota: l’object verrà rilasciato automaticamente.