シングルトンを使用しようとしている 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で正しく設定されていましたが、明らかに別のクラスで割り当てを行うと、その値が失われます。したがって、明らかに機能していません!(同じパターンを持つ他のいくつかのシングルトンがありますが、これまでのところそれらは表示されます働くこと。
ここで何が問題で、どうすれば修正できますか?