NSMutableArray вне области видимости проблемы - PullRequest
0 голосов
/ 29 октября 2010

Я новичок в объективе-C. Я хочу использовать NSMutableArray для хранения некоторых объектов, к которым я получу доступ позже.

У меня есть интерфейс:

@interface ControlWheel : RotatableObject <LeverSubject>
{
 NSMutableArray *subjectArray_;
}
-(id) initWithCWDef: (ControlWheelDef*) def;
-(void) addSubject: (id) subject;
@end

Вот реализация:

-(id) initWithCWDef:(ControlWheelDef *)def
{
    ...
    self = [super initWithDef:&rDef];
    if (self)
    {
        subjectArray_ = [NSMutableArray arrayWithCapacity:1];
    }
    return self;
}

-(void) addSubject:(id)subject
{
    [subjectArray_ addObject:subject];
}

-(void) angleChangeCallback
{
    unsigned int count = [subjectArray_ count];
    for (unsigned int i = 0; i < count; i++)
    {
        [[subjectArray_ objectAtIndex:i] onAngleChanged:angle_];
    }
}

Проблема в функции angleChangeCallback. subjectArray_ находится вне области видимости. Что я делаю не так?

Ответы [ 2 ]

4 голосов
/ 29 октября 2010

arrayWithCapacity: возвращает автоматически освобожденный массив.Вы хотите, чтобы [[NSMutableArray alloc] init];.

NSMutableArray увеличивался по мере необходимости, поэтому arrayWithCapacity: в большинстве случаев не особенно полезен, если вы не собираетесь заполнять его известным большим количеством объектов.

О, и это не выходит за рамки;это было собрано пулом автоматического выпуска.

0 голосов
/ 29 октября 2010

Не похоже, что у вас есть angleChangeCallback, определенный в вашем интерфейсе вверху. Я вижу addSubject и initWithCWDef, но не его.

...