1

これが私のシングルトンコードです:

@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)」というコードは私を混乱させます。

このコードに別の配列を追加するにはどうすればよいですか?

4

2 に答える 2

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;
于 2012-04-14T22:12:59.350 に答える
1
-(id) init {
self = [super init];
if (self) {
    listOfSites    = [[NSMutableArray alloc] init];
    listOfReadings = [[NSMutableArray alloc] init];
}
return self;

}

if(self)は、言い換えると、「現在のオブジェクトが正常に作成された場合は...」を意味します。

于 2012-04-14T22:16:26.680 に答える