2016-11-01 3 views
-4

コードをswift xcodeからc#(xamarin)に変換しようとしています。xcodeのコード例を理解できません

#pragma mark - Implement DTBackgroundView Class 

@interface DTBackgroundView : UIView 
{ 
    UIWindow *_previousKeyWindow; 
    UIWindow *_alertWindow; 
    NSMutableArray *_alertViews; 
} 

+ (Instancetype)currentBackground; 

static DTBackgroundView *singletion = nil; 

@implementation DTBackgroundView 

+ (Instancetype)currentBackground 
{ 
    static dispatch_once_t onceToken; 
    dispatch_once(&onceToken, ^{ 
     singletion = [DTBackgroundView new]; 
    }); 

    return singletion; 
} 

私の質問は次のとおりです:

  1. をcurrentBackgroundている人である私は、次のコードを理解していませんか?

  2. 次のコードでbackgroundView何をされていますAdeelは彼のコメントで言うように、それはObjective-Cのコードではなく、スウィフト

DTBackgroundView *backgroundView = [DTBackgroundView currentBackground]; 
+1

__singleton__クラスのアイデアを得るには、__designPatterns__の本を参照する必要があります。あなたが投稿したコードは、その__Objective-C__を__Swift__していません。 – Adeel

答えて

2

です。 DTBackgroundViewクラスの実装を投稿しました。

currentBackgroundメソッドは、クラスのシングルトンインスタンスを要求するために使用するクラスメソッド(またはC++で呼び出される「静的メソッド」)です。シングルトンが既に作成されている場合、そのメソッドはそれを返します。そうでない場合は、シングルトンを作成して返します。

シングルトン設計パターンを読み、C#でシングルトンを作成するための規約が何であれ使用してください。

私は、そのコードの行単位の変換を心配することはありません - それはココア(iOSとMac OS)に固有のGCD(グランドセントラルディスパッチ)を使用します。シングルトンを作成して返すためのC#コンベンションを見つけて使用してください。

+0

頭字語のGCDを拡張できますか?私のような読者はそれに精通していないかもしれません。 – matthewrdev

+0

Googleはあなたの友人です。 GCDはGrand Central Dispatchの略です。それについてのwiki記事があります:https://en.wikipedia.org/wiki/Grand_Central_Dispatch –

+0

合意しました、Googleは私の友人です(それが何であったかを素早く学びましたが、答えにネストされていると便利だと思いました:) – matthewrdev

関連する問題