Singleton Class iPhone

时间:2010-01-17 23:07:02

标签: iphone singleton global-variables

好的,我正在努力避免全局变量,所以我读了单例类。 这是尝试设置和读取可变数组,但结果为null。

//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 个答案:

答案 0 :(得分:4)

您需要先分配并初始化数组。就个人而言,我会在内容类的init方法中这样做:

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

    return self;
}

答案 1 :(得分:3)

您永远不会实际分配/初始化contentArray数组。