Не могу добавить объект в статический NSMutableArray - PullRequest
0 голосов
/ 17 ноября 2011

У меня есть статическая переменная в appDelegate, объявленная так:

файл appdelegate.h:

+(NSMutableArray*)allBanco;
+(void)setAllBanco:(NSMutableArray*)value;

файл appdelegate.m:

static NSMutableArray * allBanco;

+(NSMutableArray*)allBanco
{
    return allBanco;
}

+(void)setAllBanco:(NSMutableArray*)value
{
    if(allBanco != value)
    {
        [allBanco release];
        allBanco = [value copy];
    }
}

Я пытался получить доступ к другому классу в файле .m:

#import "AppDelegate.h"

    [[AppDelegate allBanco] addObject:testeObj];

Я не могу понять, почему, я могу войти

NSLog(@"%i",[[AppDelegate allBanco] count]);

и идет нормально.

Я пытался:

    NSMutableArray * temp = [[[NSMutableArray alloc]init]autorelease];
    temp = [AppDelegate allBanco];
    [temp addObject:testeObj];
    [AppDelegate setAllBanco:temp];

и делаю работу.

Ответы [ 2 ]

3 голосов
/ 17 ноября 2011

Учитывая, что вы создали свой массив правильно, имейте в виду, что -copy возвращает неизменяемую копию, поэтому вы можете потерпеть крах позже при ее изменении.ваша ошибка, я вполне уверен, что это действительно проблема:

-[__NSArrayI addObject:]: нераспознанный селектор отправлен в экземпляр

Вы пытались добавить объект в NSArray, а не NSMutableArray.Попробуйте использовать -mutableCopy.

2 голосов
/ 17 ноября 2011

Вы не создали объект для allBanco, на который можно указать. Измените свой метод, чтобы вы могли создать его, если он еще не существует:

+(NSMutableArray*)allBanco
{
    if (!allBanco)
       allBanco = [[NSMutableArray alloc] init];
    return allBanco;
}
...