Apple 有一个不错的 explanation of Type (Class) Methods ,但是,他们的示例如下所示:
class SomeClass {
class func someTypeMethod() {
// type method implementation goes here
}
}
SomeClass.typeMethod()
我看到这个完全相同的例子随处可见。我的问题是,我需要从我的类的一个实例中调用我的类型方法,但这似乎无法计算。
我一定是做错了什么,但我注意到 Apple 还不支持类属性。我想知道我是否在浪费时间。
我在 Playground 上试过这个:
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()
这行得通。它不接受任何参数,因此您无需传入任何参数。您还可以像这样动态获取 ClassA:
swift 2
var staticRet:String = self.dynamicType.staticMethod()
swift 3
var staticRet:String = type(of:self).staticMethod()
关于ios - 如何在实例方法中调用类型方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24472399/