Swift - Clases

Las clases en Swift 4 son bloques de construcción de construcciones flexibles. De manera similar a las constantes, variables y funciones, el usuario puede definir propiedades y métodos de clase. Swift 4 nos proporciona la funcionalidad de que, al declarar clases, los usuarios no necesitan crear interfaces o archivos de implementación. Swift 4 nos permite crear clases como un solo archivo y las interfaces externas se crearán por defecto una vez que se inicialicen las clases.

Beneficios de tener clases

  • La herencia adquiere las propiedades de una clase a otra clase

  • La conversión de tipos permite al usuario verificar el tipo de clase en tiempo de ejecución

  • Los desinicializadores se encargan de liberar recursos de memoria

  • El recuento de referencias permite que la instancia de clase tenga más de una referencia

Características comunes de clases y estructuras

  • Las propiedades se definen para almacenar valores
  • Los subíndices se definen para proporcionar acceso a los valores.
  • Los métodos se inicializan para mejorar la funcionalidad
  • Los inicializadores definen el estado inicial
  • La funcionalidad se expande más allá de los valores predeterminados
  • Confirmación de los estándares de funcionalidad del protocolo

Sintaxis

Class classname {
   Definition 1
   Definition 2
   --- 
   Definition N
}

Definición de clase

class student {
   var studname: String
   var mark: Int 
   var mark2: Int 
}

La sintaxis para crear instancias

let studrecord = student()

Ejemplo

class MarksStruct {
   var mark: Int
   init(mark: Int) {
      self.mark = mark
   }
}

class studentMarks {
   var mark = 300
}

let marks = studentMarks()
print("Mark is \(marks.mark)")

Cuando ejecutamos el programa anterior usando el patio de recreo, obtenemos el siguiente resultado:

Mark is 300

Acceder a las propiedades de clase como tipos de referencia

Se puede acceder a las propiedades de la clase mediante el '.' sintaxis. El nombre de la propiedad está separado por un '.' después del nombre de la instancia.

class MarksStruct {
   var mark: Int
   init(mark: Int) {
      self.mark = mark
   }
}

class studentMarks {
   var mark1 = 300
   var mark2 = 400
   var mark3 = 900
}

let marks = studentMarks()
print("Mark1 is \(marks.mark1)")
print("Mark2 is \(marks.mark2)")
print("Mark3 is \(marks.mark3)")

Cuando ejecutamos el programa anterior usando el patio de recreo, obtenemos el siguiente resultado:

Mark1 is 300
Mark2 is 400
Mark3 is 900

Operadores de identidad de clase

Las clases en Swift 4 se refieren a múltiples constantes y variables que apuntan a una sola instancia. Para conocer las constantes y variables que apuntan a una instancia de clase particular, se utilizan operadores de identidad. Las instancias de clase siempre se pasan por referencia. En las clases, las instancias NSString, NSArray y NSDictionary siempre se asignan y se transmiten como una referencia a una instancia existente, en lugar de como una copia.

Idéntico a los operadores No idéntico a los operadores
El operador utilizado es (===) El operador utilizado es (! ==)
Devuelve verdadero cuando dos constantes o variables apuntan a una misma instancia Devuelve verdadero cuando dos constantes o variables apuntan a una instancia diferente
class SampleClass: Equatable {
   let myProperty: String
   init(s: String) {
      myProperty = s
   }
}

func ==(lhs: SampleClass, rhs: SampleClass) -> Bool {
   return lhs.myProperty == rhs.myProperty
}

let spClass1 = SampleClass(s: "Hello")
let spClass2 = SampleClass(s: "Hello")

spClass1 === spClass2 // false
print("\(spClass1)")

spClass1 !== spClass2 // true
print("\(spClass2)")

Cuando ejecutamos el programa anterior usando el patio de recreo, obtenemos el siguiente resultado:

main.SampleClass
main.SampleClass