2017-06-20 17 views
-4

スウィフト3.0でのシングルトンクラスの設定方法。現在、私はこのコードを目的に使用しています。 スウィフト3.0でのシングルトンクラスの設定方法。現在、私は、あなたは、Appleがついにそのの世話をしたSWIFT 3.0でのシングルトンクラスの作成方法

#pragma mark Singleton 
static ModelManager* _instance = nil; 

+ (ModelManager *) sharedInstance { 
@synchronized([ModelManager class]){ 
    if (!_instance) { 
     _instance = [[self alloc] init]; 
    } 
    return _instance; 
} 
return nil; 
} 
+ (id)alloc { 
@synchronized([ModelManager class]){ 

    NSAssert(_instance == nil, @"Attempted to allocate a second instance of a singleton."); 
    _instance = [super alloc]; 
    return _instance; 
} 
return nil; 
} 
+ (id)allocWithZone:(NSZone *)zone { 
@synchronized([CTEModelManager class]) { 
    NSAssert(_instance == nil, @"Attempted to allocate a second instance of a singleton."); 
    _instance= [super allocWithZone:zone]; 
    return _instance; // assignment and return on first allocation 
} 
return nil; //on subsequent allocation attempts return nil 
} 
- (id)init { 
self = [super init]; 
if (self != nil) { 
} 
return self; 
} 
- (id)copyWithZone:(NSZone *)zone { 
return self; 
} 
+1

[Cocoa Design Patternを採用する]セクションにも「Singleton」セクションがあります(https://developer.apple.com/library/content/documentation/Swift/Conceptual/BuildingCocoaApps/AdoptingCocoaDesignPatterns.html#//apple_ref/doc/uid/TP40014216-CH7-ID6)。 –

答えて

2

、それは(あなたがこの上無限の議論をグーグルことができます)原則として、この単純な...

open class Grid { 
    static let shared = Grid() 

だObjective Cの中で、このコードを使用しています追加

open class Grid { 
    static let shared = Grid() 
    fileprivate init() {} 

これだけです。 Any reason not use use a singleton "variable" in Swift?追加:

シングルトンあなたは、単に "Name.shared" を使用するには、その

x = Grid.shared.someFunction() 

"純粋な糖" イディオム...

が、この考えてみましょう。それは純粋な構文的砂糖、またはおそらくコカインであり、あなたのために正しいかもしれないし、そうでないかもしれないことに注意してください。

+0

クラスSingletonClass:NSObjectの {静的LET sharedInstance = SingletonClass() FUNCのisValidEmail(_ testStr:文字列) - >ブール {せemailRegEx =「[A-Z0-9a-Z ._%+ - ]let range = testStr.range(of:emailRegEx、options:.regularExpression) 結果をlet = [A-Za-z0-9 .-] + \\ [範囲!= nil? true:false 返品結果 } } –

+1

こんにちは@VibhaSingh。あなたはそのために別々の新しい質問をする必要があります。乾杯。 – Fattie

関連する問題