que objetos inicializadores computadas ios class methods types swift

ios - objetos - Métodos de tipo de llamada dentro de un método de instancia



que es self en swift (2)

En Swift 3 puedes usar:

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

Apple tiene una buena explicación de los métodos tipo (clase) Here .

Sin embargo, su ejemplo se ve así:

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

Veo este mismo ejemplo exactamente repetido en todas partes.

Sin embargo, necesito llamar a mi Método Tipo desde una instancia de mi clase, y eso no parece calcular.

DEBO estar haciendo algo mal, pero noté que Apple todavía no es compatible con Class Properties :(. Me pregunto si iré a un pozo seco para obtener agua.

Esto es lo que he intentado (en un patio de recreo):

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()

¿Alguien tiene una pista para mí?


var staticRet:String = ClassA.staticMethod()

Esto funciona. No requiere ningún parámetro, por lo que no es necesario que ingrese ninguno. También puede obtener ClassA dinámicamente así:

Swift 2

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

Swift 3

var staticRet:String = type(of:self).staticMethod()