Синглтон класс iPhone - PullRequest
       23

Синглтон класс iPhone

3 голосов
/ 18 января 2010

Хорошо, я стараюсь избегать глобальных переменных, поэтому я читаю на одноэлементных классах. Это попытка установить и прочитать изменяемый массив, но результат будет нулевым.

//Content.h

@interface Content : NSObject {
    NSMutableArray *contentArray;
}

+ (Content *) sharedInstance;

- (NSMutableArray *) getArray;
- (void) addArray:(NSMutableArray *)mutableArray;


@end

.

//Content.m

@implementation Content



static Content *_sharedInstance;

+ (Content *) sharedInstance
{
    if (!_sharedInstance)
    {
        _sharedInstance = [[Content alloc] init];
    }

    return _sharedInstance;
}

- (NSMutableArray *) getArray{
    return contentArray;

}

- (void) addArray:(NSMutableArray *)mutableArray{

    [contentArray addObject:mutableArray];  

}

@end

И в ViewController я добавил #import "Content.h", где я пытаюсь вызвать это:

NSMutableArray *mArray = [NSMutableArray arrayWithObjects:@"test",@"foo",@"bar",nil];

Content *content = [Content sharedInstance];
[content addArray:mArray];

NSLog(@"contentArray: %@", [content getArray]);

Ответы [ 2 ]

4 голосов
/ 18 января 2010

Вы должны сначала выделить и инициализировать массив. Лично я бы сделал это в методе init класса содержимого следующим образом:

-(id)init{
    if(self = [super init]){
        …the rest of your init code… 
        contentArray = [[NSMutableArray alloc] init];
    }

    return self;
}
3 голосов
/ 18 января 2010

Вы никогда не выделяете / не инициализируете массив contentArray.

...