Singleton如何声明NSMutableArray

时间:2014-04-19 22:43:29

标签: objective-c singleton

我正在尝试实现一个包含NSMutableArray的单例*我到目前为止所做的就是下面的内容。

Singleton.h

#import <Foundation/Foundation.h>

@interface Singleton : NSObject{
    NSMutableArray* ClassArray;
}

@property NSMutableArray* ClassArray;
+(Singleton*) getInstance;



- (void) SetClassArray:(NSMutableArray *)InputClassArray;
- (NSMutableArray*) GetClassArray;

Singleton.m

#import "Singleton.h"

@implementation Singleton

@synthesize ClassArray;

static Singleton *singletonInstance;

+ (Singleton*)getInstance{
    if (singletonInstance == nil) {
        singletonInstance = [[super alloc] init];
    }
    return singletonInstance;
}

- (void) SetClassArray:(NSMutableArray *)InputClassArray{
    ClassArray = InputClassArray;
}

- (NSMutableArray*) GetClassArray{
    return ClassArray;
}
@end

我想知道的是[[NSMutableArray alloc] init];走?或者我不需要它。同样,当ClassArray初始化时,我想要一些默认值,(从另一个函数返回,[DatabaseFunctions GetClassDefaultArray])再次在哪里?我假设下面的行是singletonInstance = [[super alloc] init];但它不接受ClassArray。

我有一个由四个视图控制器组成的应用程序,我需要的是一个可以从任何这些视图中访问和写入的nsmutablearray。总共有三个人。 谢谢

1 个答案:

答案 0 :(得分:0)

  

我想知道[[NSMutableArray alloc] init]在哪里;走?或者我不需要它

这取决于你对吸气剂的期望。您的用例在nil中返回GetClassArray是否合理?

如果是nil

,则可以通过返回一个空数组来防范它
- (NSMutableArray*) GetClassArray{
    if ( ! ClassArray ) {
        ClassArray = [[NSMutableArray alloc] init];
    }

    return ClassArray;
}
  

我想要一些默认值

您可以随时根据需要填充数组,最好的起点可能是您的init方法:

+ (Singleton*)getInstance{
    if (singletonInstance == nil) {
        singletonInstance = [[super alloc] init];
        NSMutableArray *array = ...;
        [singletoneinstance SetClassArray:array];
    }
    return singletonInstance;
}

作为旁注,我建议您阅读一些naming conventions,以便将来不要在类名和变量名之间混淆。