0

以下は、配列に文字列を追加するためのシングルトンのコードです。最初の NSLog は正しい文字列を返しますが、2 番目の NSLog は正しくなく、null を返します。関連するコードを追加する必要がある場合は、お知らせください。ありがとう。

 +(void) addArray:(NSString *)string
{
    NSLog(@"%@",string);

    Singleton *shared = [Singleton sharedManager];
    [shared.array addObject:string];

    NSLog(@"array: %@", shared.array);
}

このコードを singleton.m に追加しました

- (id)init
{
    self = [super init];

    if (self) {
        // Work your initialising magic here as you normally would
        array = [[NSMutableArray alloc]init];
    }

    return self;
}

プログラムの別の部分でこのコードを実行すると、正しい情報が出力されます

+(void) setPoints:(int) points
{
    Singleton *shared = [Singleton sharedManager];
    shared.points = points;
    NSLog(@"%d",shared.points);
}

これが私のシングルトンメソッドです

+ (Singleton *)sharedManager
{
    static Singleton *sharedInstance = nil;
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        sharedInstance = [[Singleton alloc] init];
        // Do any other initialisation stuff here
        array = [[NSMutableArray alloc]init];
    });
    return sharedInstance;
}
4

1 に答える 1

0

Singleton init で alloc-init 配列を忘れた可能性があります。

于 2012-07-01T23:33:23.663 に答える