Возникли проблемы при добавлении объектов в NSMutableArray в Objective C

objective-c iphone cocoa cocoa-touch

16166 просмотра

2 ответа

Я использую iPhone SDK, и у меня возникла проблема с выполнением чего-то простого. Я пытаюсь добавить NSNumber объект в NSMutableArray переменной экземпляра. Я попытался добавить карту NSNumber в NSMutableArray просматривают CardCarArray , однако, не нарушая, он не добавляется в массив. Вот код


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

Таким образом, этот код выполняется, и, похоже, не имеет утечки (согласно инструменту производительности Leaks). Однако при пошаговом выполнении кода CardIdObject ни в коем случае не появляется в visibleCardsArray .

Просматривая SO, я знаю, что эти основные вопросы довольно часто встречаются у новичков ObjC (таких как я), поэтому заранее приносим извинения!

Автор: pchap10k Источник Размещён: 12.11.2019 09:12

Ответы (2)


17 плюса

Решение

Вы инициализировали свой viewedCardsArray? Если вам не нужно где-то - это обычно делается в initметоде для вашего класса:

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

Тогда это выпущено в deallocметоде:

- (void)dealloc
{
    [viewedCardsArray release];
    [super dealloc];
}
Автор: Alex Rozanski Размещён: 12.05.2009 09:32

3 плюса

Perspx наметил один способ инициализации массива. Однако вы также можете использовать методы класса, предоставляемые NSArray:

self. viewedCardsArray = [NSMutableArray array];

Это может пойти в init или в другом месте.

Примечание. Объект будет автоматически освобожден.

Автор: Alastair Stuart Размещён: 12.05.2009 02:08
Вопросы из категории :
32x32