ですから、かなり単純な質問です。シングルトン パターンの過剰使用の影響を無視します。Objective-C で信頼できるシングルトン パターンを見つけようとしています。私はこれに出くわしました:
@implementation SomeSingleTonClass
static SomeSingleTonClass* singleInstance;
+ (SomeSingleTonClass*)getInstance
{
static dispatch_once_t dispatchOnceToken;
dispatch_once(&dispatchOnceToken, ^{
singleInstance = [[SomeSingleTonClass alloc] init];
});
return singleInstance;
}
- (void)someMethodOnTheInstance
{
NSLog(@"DO SOMET WORK")
}
@end
これにはかなり満足していますが、これは多くのことにつながります。
[[SomeSingleTonClass getInstance] someMethodOnTheInstance];
私の質問は、これが純粋な静的クラスよりも優れている理由です。
@implementation SomeStaticClass
static NSString* someStaticStateVariable;
- (id)init
{
//Don't allow init to initialize any memory state
//Perhaps throw an exception to let some other programmer know
//not to do this
return nil;
}
+ (void)someStaticMethod
{
NSLog(@"Do Some Work");
}
実際に得られるのは、ややクリーンなメソッド呼び出しだけです。基本的にこれを交換します:
[[SomeSingleTonClass getInstance] someMethodOnTheInstance];
このため
[SomeStaticClass someStaticMethod];
これは確かに小さな単純化であり、いつでもクラス内にインスタンスを格納できます。これはより知的好奇心です。シングルトンの代わりに静的クラスを使用することで、Objective-C のどの神様を怒らせているのでしょうか? これを考えるのは私が最初ではないと確信していますが、最初に重複検索を行ったことを約束します。私が見つけたいくつかの答えは、古いバージョンのココアに基づいているように感じました.