SharedInstance in Swift



有人能帮我把这段代码转换成 Swift 吗?

在这里,我提到了Objective-C代码中的.h.m

Abc是一个UIViewController.我想在我的 Swift 代码中执行此方法。S 怎么可能?

Abc.h

+ (Abc*)sharedInstance;
- (void) startInView:(UIView *)view;
- (void) stop;

Abc.m

static Abc*sharedInstance;
+ (Abc*)sharedInstance
{
    @synchronized(self)
    {
        if (!sharedInstance)
        {
            sharedInstance = [[Abc alloc] init];
        }
        return sharedInstance;
    }
}
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
    }
    return self;
}
@end

在 swift 中,最好和最干净的方法就是这个

static let sharedInstance = ABC()

不需要structsclass variable,这仍然是一种有效的方法,但它不是很像 Swift。

不确定您是否想使用 Singleton 进行UIViewControllers但一般来说,Swift 中的 Singleton 类看起来像这样

class ABC {
     static let sharedInstance = ABC()
     var testProperty = 0
     func testFunc() {
     }
}

比起你的其他课程,你只会说

let abc = ABC.sharedInstance
abc.testProperty = 5
abc.testFunc()

或直接调用

ABC.sharedInstance.testProperty = 5
ABC.sharedInstance.testFunc()

另外作为旁注,如果您使用 Singleton 类并且您有一个初始化器,您应该将其设为私有

class ABC {
     static let sharedInstance = ABC()
     private init() {
    }
}

相关内容

  • 没有找到相关文章