如何在我的单例代码中添加另一个对象?

时间:2012-04-14 22:08:22

标签: objective-c cocoa

这是我的单身代码:

@synthesize listOfSites;

+ (id)sharedInstance
{
    static dispatch_once_t dispatchOncePredicate = 0;
    __strong static id _sharedObject = nil;
    dispatch_once(&dispatchOncePredicate, ^{
        _sharedObject = [[self alloc] init];
    });

    return _sharedObject;
}

-(id)init
{
    self = [super init];
    if (self) {
        listOfSites = [[NSMutableArray alloc] init];
    }
    return self;
}

@end

这几乎是教科书......但是,我想添加另一个类似于“listOfSites”的数组(称之为“listOfReadings”)。代码中写着“if(self)”让我感到困惑。

如何在此代码中添加其他数组?

2 个答案:

答案 0 :(得分:2)

if (self) {除了验证[super init]是否有效以及它没有返回NULL或其他任何内容之外什么都不做......

除此之外,您可以正常执行此操作,例如:

  • 声明一个listOfReadings数组(作为ivar / property?)
  • 设置

    listOfReadings = [[NSMutableArray alloc] init];
    

    listOfReadings = [[NSMutableArray alloc] initWithObjects:nil];
    

    (如果是property

    [self setListOfReadings:[[NSMutableArray alloc] initWithObjects:nil]];
    

示例:

-(id) init {
    self = [super init];
    if (self) {
        listOfSites = [[NSMutableArray alloc] init];
        listOfReadings = [[NSMutableArray alloc] init];
    }
    return self;
}

在您的NSMutableArray文件中声明了新的.h

NSMutableArray* listOfReadings;

答案 1 :(得分:1)

-(id) init {
self = [super init];
if (self) {
    listOfSites    = [[NSMutableArray alloc] init];
    listOfReadings = [[NSMutableArray alloc] init];
}
return self;

}

if(self)换句话说是“如果成功创建了当前对象,那么......”