我正在尝试实现一个包含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。总共有三个人。 谢谢
答案 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,以便将来不要在类名和变量名之间混淆。