如何在Swift中编写这样的初始化程序?

时间:2014-09-18 14:19:35

标签: ios objective-c swift initialization

请查看这段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中编写这样的初始化器?

2 个答案:

答案 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()是你的初始函数之一