在实例方法中调用types方法

苹果在这里有一个types(类)方法的很好的解释。

但是,他们的例子是这样的:

class SomeClass { class func someTypeMethod() { // type method implementation goes here } } SomeClass.typeMethod() 

我看到这个完全相同的例子无处不在。

但是,我需要从我的类的实例中调用我的types方法,似乎并没有计算。

我必须做错了什么,但我注意到,苹果还不支持类属性:(我想知道如果我要去一个干井的水。

这是我所尝试过的(在操场上):

 class ClassA { class func staticMethod() -> String { return "STATIC" } func dynamicMethod() -> String { return "DYNAMIC" } func callBoth() -> ( dynamicRet:String, staticRet:String ) { var dynamicRet:String = self.dynamicMethod() var staticRet:String = "" // staticRet = self.class.staticMethod() // Nope // staticRet = class.staticMethod() // No way, Jose // staticRet = ClassA.staticMethod(self) // Uh-uh // staticRet = ClassA.staticMethod(ClassA()) // Nah // staticRet = self.staticMethod() // You is lame // staticRet = .staticMethod() // You're kidding, right? // staticRet = this.staticMethod() // What, are you making this crap up? // staticRet = staticMethod() // FAIL return ( dynamicRet:dynamicRet, staticRet:staticRet ) } } let instance:ClassA = ClassA() let test:( dynamicRet:String, staticRet:String ) = instance.callBoth() 

有没有人有我的线索?

 var staticRet:String = ClassA.staticMethod() 

这工作。 它不需要任何参数,所以你不需要传入任何参数。 您也可以像这样dynamic获取ClassA:

 var staticRet:String = self.dynamicType.staticMethod() 

在Swift 3中,你可以使用:

 let me = type(of: self) me.staticMethod()