有人可以帮我将这段代码转换成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
答案 0 :(得分:2)
在swift中,最好和最干净的方法就是这个
static let sharedInstance = ABC()
不需要structs
或class variable
,这仍然是一种有效的方法,但它不像Swift那样。
不确定你是否想要为UIViewControllers
使用Singleton,但一般来说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() {
}
}