2016-11-01 2 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 в следующем коде:

DTBackgroundView *backgroundView = [DTBackgroundView currentBackground]; 
+1

Чтобы получить представление о классе __singleton__, вам необходимо обратиться к книге __designPatterns__. И код, который вы разместили, не находится в __Swift__ его __Objective-C__. – Adeel

ответ

2

Как говорит Адил в своем комментарии, что это код Objective-C, а не Swift. Вы опубликовали реализацию класса DTBackgroundView.

Метод currentBackground - метод класса (или «статический метод», как он называется в C++), который вы используете для запроса экземпляра singleton класса. Если синглтон уже создан, этот метод возвращает его. Если нет, он создает синглтон и возвращает его.

Вы должны ознакомиться с шаблоном проектирования синглтона и использовать все, что предусмотрено для создания синглонов в C#.

Я бы не стал слишком беспокоиться о попытке сделать поэтапное преобразование этого кода - он использует GCD, (Grand Central Dispatch), который относится к Cocoa (iOS и Mac OS). Просто найдите соглашение C# для создания и возврата одиночных чисел и используйте это.

+0

Можете ли вы расширить акроним GCD? Читатели (например, я), возможно, не знакомы с ним. – matthewrdev

+0

Google - ваш друг. GCD означает Grand Central Dispatch. На нем есть статья wiki: https://en.wikipedia.org/wiki/Grand_Central_Dispatch –

+0

Согласен, Google - мой друг (быстро узнал, что это было), но подумал, что это может быть полезно вложить в ответ :) – matthewrdev