我正在尝试将代码从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;
}
我的问题是:
谁是 currentBackground ?
以下代码中的 backgroundView 是什么:
DTBackgroundView *backgroundView = [DTBackgroundView currentBackground];
答案 0 :(得分:2)
正如Adeel在评论中所说,那是Objective-C代码,而不是Swift。您已发布了DTBackgroundView
类的实施。
currentBackground
方法是一种类方法(或#34;静态方法"因为它在C ++中调用),您可以使用它来请求类的单例实例。如果已经创建了单例,则该方法返回它。如果没有,它会创建单例并返回它。
你应该阅读单例设计模式,并使用C#中创建单例的惯例。
我不会过分担心尝试对该代码进行逐行转换 - 它使用GCD,(Grand Central Dispatch)特定于Cocoa(iOS和Mac OS) )。只需找到用于创建和返回单例的C#约定并使用它。