通常、次のレシピでシングルトンを構築していました。
+ (MyClass *)sharedInstance
{
static MyClass *_sharedInstance = nil;
static dispatch_once_t oncePredicate;
dispatch_once(&oncePredicate, ^{
_sharedInstance = [[self alloc] init];
// Init variables
});
return _sharedInstance;
}
次に、次のようにメソッドを呼び出すことができます。
[[MyClass sharedInstance] anyInstanceMethod];
しかし、init 変数がクラス外から構成可能である場合はどうなるでしょうか。私のアプローチは、2 つのクラス メソッドを作成することです。そのうちの 1 つは構成可能な変数を使用します。
+ (MyClass *)sharedInstanceWithVariableOne:(NSString*)aParamOne andVariableTwo:(NSString*)aParamTwo
{
static MyClass *_sharedInstance = nil;
static dispatch_once_t oncePredicate;
dispatch_once(&oncePredicate, ^{
_sharedInstance = [[self alloc] init];
// Init configurables variables
_sharedInstance.paramOne = aParamOne;
_sharedInstance.paramTwo = aParamTwo;
});
return _sharedInstance;
}
そして、デフォルト値を持つこの最後のものへのプロキシとしての2番目のもの:
+ (MyClass *)sharedInstance
{
return [MyClass sharedInstanceWithVariableOne:@"value1" andVariableTwo:@"value2"];
}
したがって、configure 変数でシングルトン クラスを使用する場合は、最初に を呼び出しsharedInstanceWithVariableOne:andVariableTwo
、次に のみを呼び出す必要がありますsharedInstance
。このアプローチは最善ではないと思うので、他のアプローチを使用することを楽しみにしています。
前もって感謝します。