Tendo problemas ao adicionar objects ao NSMutableArray no Objective C

Estou usando o SDK do iPhone e tenho um problema ao fazer algo simples. Eu estou tentando adicionar um object NSNumber a uma variável de instância NSMutableArray . Eu tentei adicionar o cartão NSNumber ao NSMutableArray visibleCardsArray , no entanto, sem quebrar, ele não é adicionado à matriz. Aqui está o código.

///////////////////////////////////////////////////// // 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]; } 

Portanto, esse código é executado e não parece vazar (de acordo com a ferramenta de desempenho Leaks). No entanto, ao percorrer o código, em nenhum momento CardIdObject aparece em ViewedCardsArray .

Olhando através de SO, eu sei que estas perguntas básicas são muito comuns para iniciantes ObjC (como eu), então peço desculpas antecipadamente!

Você já inicializou seu viewedCardsArray ? Se não precisar em algum lugar – isso geralmente é feito no método init para sua class:

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

Então é liberado no método dealloc :

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

Perspx delineou uma maneira de inicializar a matriz. No entanto, você também pode usar os methods de class fornecidos pelo NSArray:

 self. viewedCardsArray = [NSMutableArray array]; 

Isso pode ir no init ou em outro lugar.

Nota: O object será liberado automaticamente.