我正在尝试实现一个包含NSMutableArray *的单例,到目前为止,我在下面所做的工作。

单例

#import <Foundation/Foundation.h>

@interface Singleton : NSObject{
    NSMutableArray* ClassArray;
}

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



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

单例

#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

我想知道[[NSMutableArray alloc] init]在哪里? 走? 还是我不需要它

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

如果它为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;
}

作为附带说明,我建议您阅读一些命名约定,以免将来您不要在类名和变量名之间混淆。

  ask by Display Name translate from so

未解决问题?本站智能推荐: