我如何在Swift中声明一个类级别的函数?

我似乎无法在文档中find它,我想知道它是否存在于本地Swift中。 例如,我可以在NSTimer上调用一个类级别的函数,如下所示:

 NSTimer.scheduledTimerWithTimeInterval(0.2, target: self, selector: "someSelector:", userInfo: "someData", repeats: true) 

但我似乎无法find一种方法来执行我的自定义对象,以便我可以这样调用它:

 MyCustomObject.someClassLevelFunction("someArg") 

现在,我知道我们可以混合使用Objective-C w / Swift,并且NSTimer类方法可能是互操作性的一个补充。

  1. Swift中存在类级别的函数吗?

  2. 如果是,我如何在Swift中定义一个类级别的函数?

是的,你可以像这样创build类的function:

 class func someTypeMethod() { //body } 

虽然在Swift中,它们被称为types方法。

你可以在你的类中定义Type方法:

 class Foo { class func Bar() -> String { return "Bar" } } 

然后从类Name中访问它们,即:

 Foo.Bar() 

在Swift 2.0中,你可以使用static关键字来防止子类重写方法。 class将允许子类重写。

更新:感谢@Logan

对于Xcode 6 beta 5,您应该使用static关键字来指定类的结构和class关键字:

 class Foo { class func Bar() -> String { return "Bar" } } struct Foo2 { static func Bar2() -> String { return "Bar2" } } 

从官方的Swift 2.1 Doc :

您可以通过在方法的func关键字之前写入static关键字来指示types方法。 类也可以使用class关键字来允许子类重写该方法的超类实现。

在一个结构中,你必须使用static来定义一个Type方法。 对于类,您可以使用staticclass关键字,具体取决于是否允许您的方法被子类重写。

你需要在你的类中定义方法

  class MyClass { class func MyString() -> String { return "Welcome" } } 

现在你可以使用类名来访问它,例如:

  MyClass.MyString() 

这将作为“欢迎”。