1

シングルトンを使用しようとしている iPad アプリケーションがあります。.h ファイル内のコードは次のとおりです。

//-------------------------------------------
//--  singleton: timeFormat
@interface SingletonTimeFormat : NSObject  {
}
@property (nonatomic, retain) NSNumber *timeFormat;

+ (id)sharedTimeFormat;
@end

これは .m ファイルのコードです。

//-------------------------------------------
//--  SingletonTimeFormat
@implementation SingletonTimeFormat  {

}

@synthesize timeFormat;

//--  sharedColorScheme  --
+ (id)sharedTimeFormat  {

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) {
    timeFormat = [[NSNumber alloc] init];
}
return self;
}

@end

AppDelegate - didFinishLaunchingWithOptionsに値 (12 または 24) をロードし、timeFormat値を取得する場合は、これを使用します。

SingletonTimeFormat *stf = [[SingletonTimeFormat alloc]init];
if([stf.timeFormat isEqualToNumber: [NSNumber numberWithInt:12]]) {

これは0を返します(AppDelegateで正しく設定されていましたが、明らかに別のクラスで割り当てを行うと、その値が失われます。したがって、明らかに機能していません!(同じパターンを持つ他のいくつかのシングルトンがありますが、これまでのところそれらは表示されます働くこと。

ここで何が問題で、どうすれば修正できますか?

4

1 に答える 1