Не удалось добавить объекты в NSMutableArray в Objective C
Я использую iPhone SDK и имею проблему, делающую что-то простое. Я пытаюсь добавить объект NSNumber к переменной экземпляра NSMutableArray . Я попытался добавить карту NSNumber в NSMutableArray , смотрящий CardsArray , но без нарушения, он не добавляется в массив. Вот код.
///////////////////////////////////////////////////// // 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]; }
Таким образом, этот код выполняется и, по-видимому, не течет (согласно инструменту производительности Leak). Однако при переходе через код, ни в коем случае не появляется CardIdObject в viewCardsArray .
Просматривая SO, я знаю, что эти основные вопросы довольно распространены для новичков ObjC (например, я), поэтому заранее приношу свои извинения!
- Масштабирование MKMapView для подгонки аннотаций?
- CALayer: добавить границу только с одной стороны
- фильтрация NSArray в новый NSArray в объективе-c
- Замена на устаревший размерWithFont: в iOS 7?
- Как установить плагин Xcode для автоматического форматирования кода
- Как я могу добавить объекты CGPoint в NSArray простым способом?
- Выполнение команды терминала из приложения Cocoa
- Objective-C: Как изменить class объекта во время выполнения?
- Изучение основ UIScrollView
- Добавить UIView над всеми другими видами, включая StatusBar
- Точка с запятой после имени метода в файле реализации Objective-C
- Проблема UITableView при использовании отдельного делегата / источника данных
- UILongPressGestureRecognizer вызывается дважды при нажатии
Вы инициализировали ваш viewedCardsArray
? Если вам это не нужно – это обычно делается в методе init
для вашего classа:
- (id)init { self = [super init]; if(self) { viewedCardsArray = [[NSMutableArray alloc] init]; } return self; }
Затем он освобождается в методе dealloc
:
- (void)dealloc { [viewedCardsArray release]; [super dealloc]; }
Perspx изложил один из способов инициализации массива. Однако вы также можете использовать методы classа, предоставляемые NSArray:
self. viewedCardsArray = [NSMutableArray array];
Это может происходить в init или в другом месте.
Примечание. Объект будет автореализован.