请查看这段Objective-C
代码:
- (instancetype)initWithNothing
{
self = [super init];
if (self)
{
// do something that i wish
// to do only here
// not in usual init method
}
return self;
}
如果我不想使用通常的init
方法,我会使用此方法。实际上还有一个init
没有参数。如何在Swift
中编写这样的初始化器?
答案 0 :(得分:1)
你不能。
在Swift中,初始化程序不是正常的函数。它们使用init
关键字声明,并使用类名称(或通过调用包含类的变量)进行调用。它们不是使用func
关键字声明的,并且没有在该语言中可见的名称。
相反,编写一个初始化器,它接受一个伪参数,以区别于普通的初始化器:
class MyObject: NSObject {
init(nothing: AnyObject?) {
super.init()
// whatever
}
class func test() {
let object = MyObject(nothing: nil)
}
}
答案 1 :(得分:0)
试试这个:
class func createInstanceWithNothing() -> Self{
return Self()
}
其中Self是您班级的名称 和Self()是你的初始函数之一