Невозможно получить доступ к объектам NSMutableArray даже после правильного объявления - PullRequest
1 голос
/ 16 апреля 2011

Я застрял с очень странной проблемой, по крайней мере, для меня, не могу понять, в чем решение. Проблема в том, что у меня есть два nsMutableArrays, объявленных в интерфейсе

 NSMutableArray *lastItemForFormula;  
 NSMutableArray *lastItemForExpression;  

 @property (nonatomic, retain) NSMutableArray *lastItemForFormula;
 @property (nonatomic, retain) NSMutableArray *lastItemForExpression;  

, и затем синтезировал их вреализация:

@synthesize lastItemForFormula;
@synthesize lastItemForExpression;  

Попытка использовать это моя моя функция так:

-(void)elementClicked:(id)sender {
    UIButton *btnClicked=(UIButton*)sender;  
    NSString* formula=[label text];  
    NSString *stringToBeConcatenated=[elements objectAtIndex:btnClicked.tag];  
    formula=[formula stringByAppendingString:stringToBeConcatenated];  
    [lastItemForFormula addObject:[formula copy]]; //First 
    [label setText:formula];  
    stringToBeConcatenated=[elements objectAtIndex:btnClicked.tag+1];  
    if ([labelExpression.text length]==0) {  
        [lastItemForExpression addObject:[stringToBeConcatenated copy]];  //Second
        [labelExpression setText:[lastItemForFormula objectAtIndex:[lastItemForFormula count]]];  
    }  
    else {  
        [lastItemForExpression addObject:[[NSString stringWithFormat:@"%@+%@",[labelExpression text], stringToBeConcatenated] copy]]; //Third 
        [labelExpression setText:[lastItemForFormula objectAtIndex:[lastItemForFormula count]]];  
    }  
}  

Но когда я отлаживаю программу, я ничего не получаю в обоих массивах ... Постоянно показывать 0x0когда завис над обоими.Я уверен, что, скорее всего, это проблема управления памятью.Я буду очень благодарен за любую помощь.

1 Ответ

2 голосов
/ 16 апреля 2011

Вы никогда не инициализируете массивы, поэтому отправляете сообщение addObject для nil.

Прежде чем пытаться добавить объекты в ваши массивы, вызовите init класса, которому принадлежат массивы:

lastItemForFormula = [NSMutableArray new];
lastItemForExpression = [NSMutableArray new];

И затем обязательно освободите массивы в вашем dealloc.

...