有人能帮我把这段代码转换成 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()
不需要structs
或class 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() {
}
}