无法理解xcode中的代码示例

时间:2016-11-01 12:08:27

标签: c# ios objective-c xcode xamarin

我正在尝试将代码从swift xcode转换为c#(xamarin)。我不明白以下代码:

#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 是什么:

  3. DTBackgroundView *backgroundView = [DTBackgroundView currentBackground];
    

1 个答案:

答案 0 :(得分:2)

正如Adeel在评论中所说,那是Objective-C代码,而不是Swift。您已发布了DTBackgroundView类的实施。

currentBackground方法是一种类方法(或#34;静态方法"因为它在C ++中调用),您可以使用它来请求类的单例实例。如果已经创建了单例,则该方法返回它。如果没有,它会创建单例并返回它。

你应该阅读单例设计模式,并使用C#中创建单例的惯例。

我不会过分担心尝试对该代码进行逐行转换 - 它使用GCD,(Grand Central Dispatch)特定于Cocoa(iOS和Mac OS) )。只需找到用于创建和返回单例的C#约定并使用它。