2011-09-13 5 views
0

可能性の重複:
What's the correct method to subclass a singleton class in Objective -C?シングルトンデザインパターン

@implementation Singleton 

- (id)init 
{ 
    self = [super init]; 
    if (self) { 
     // Initialization code here. 
    } 

    return self; 
} 

+(Singleton *)singleton 
{ 
    static Singleton * singleton; 
    if (singleton == nil) 
    { 
     singleton =[[Singleton alloc]init]; 
    } 
    return singleton; 
} 
@end 

は今、これまでそうgood.Actually、初期化部分がprivateである必要があります。しかし、私は後でそれについて心配するでしょう。

今、シングルトンクラスをサブクラス化したいとします。どのように修正する必要がありますか?また

のがここでのコードを見てみましょう:

+(Singleton *)singleton 
{ 
    static Singleton * singleton; 
    if (singleton == nil) 
    { 
     singleton =[[Singleton alloc]init]; 
    } 
    return singleton; 
} 

私はシングルトンメソッドは常に、サブクラスではなく、親クラス

さて私を返すように

+(self *)singleton 
{ 
    static self * singleton; 
    if (singleton == nil) 
    { 
     singleton =[[self alloc]init]; 
    } 
    return singleton; 
} 

にそれを変更する必要がありますがコンパイルエラーが発生しました

私はサブクラスが "親" 。したがって、シングルトンをサブクラス化することは意味をなさない。

厳密なシングルトンは必要ありません。

私は

@interfaceクラスAたい:シングルトン @interface ClassBの:すべてにsingelton

は、クラスAとClassBの単一のインスタンスを参照シングルトンの方法がありますか?

+2

だから、より良い方法をサブクラス化することができるシングルトンを作成する」と述べたあなたの質問(したがってタイトル)で乱雑になっています? "または「シングルトンをサブクラス化する方法」を参照してください。 – jball

+0

サブクラス化すれば、もうシングルトンではありません....子IS-A親です。 – duffymo

+1

[Objective -Cでシングルトンクラスをサブクラス化する正しい方法は何ですか?](http://stackoverflow.com/questions/3394033/whats-the-correct-method-to-subclass-a-singleton-classイン・オブ・オブジェクティブ-c)。また:http://stackoverflow.com/questions/1605083/how-do-i-make-other-classes-derive-from-a-singleton-class/1605127#1605127 –

答えて

2

duffymoがコメントで述べたように、シングルトンをサブクラス化することは理にかなっていません。説明しようとしましょう。

シングルトンの基本クラスから継承する2つの異なるサブクラスを作成するとします。 それぞれをインスタンス化すると、最初のインスタンスのみが実際にインスタンスを作成します(これがシングルトンのポイントです)。 2番目のサブクラスインスタンスはインスタンス化されません。 しかし、サブクラスで追加された機能は、各別個のサブクラスにインスタンス化されます。あなたはこのことができます

希望...

よろしく:-)表示される場合がありますように、

+0

はい、Georg Fritzche氏がコメントで指摘しているように上記の複製は、非常によく似た説明をしています。 – KlausCPH

関連する問題