iAp*_*pps -6 objective-c ios swift swift2
有人能帮我把这段代码转换成 Swift 吗?
这里我提到了.h
和.m
在Objective-C 代码中。
Abc
是一个UIViewController
。我想在我的 Swift 代码中执行这个方法。S怎么可能?
Abc.h
+ (Abc*)sharedInstance;
- (void) startInView:(UIView *)view;
- (void) stop;
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
在 swift 中,最好和最干净的方法就是这样
static let sharedInstance = ABC()
Run Code Online (Sandbox Code Playgroud)
不需要structs
or class variable
,这仍然是一种有效的方法,但它不像 Swift 那样。
不确定您是否想要使用单例,UIViewControllers
但通常 Swift 中的单例类看起来像这样
class ABC {
static let sharedInstance = ABC()
var testProperty = 0
func testFunc() {
}
}
Run Code Online (Sandbox Code Playgroud)
而不是在你的其他课程中,你只会说
let abc = ABC.sharedInstance
abc.testProperty = 5
abc.testFunc()
Run Code Online (Sandbox Code Playgroud)
或者直接调用
ABC.sharedInstance.testProperty = 5
ABC.sharedInstance.testFunc()
Run Code Online (Sandbox Code Playgroud)
另外作为旁注,如果您使用 Singleton 类并且您有一个初始化程序,您应该将其设为私有
class ABC {
static let sharedInstance = ABC()
private init() {
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3537 次 |
最近记录: |