Variables estáticas en clases, estructuras y enumerados
Clase 10 de 27 • Curso de Programación Orientada a Objetos en Swift
Contenido del curso
Tipos de Propiedades
- 5

Propiedades Almacenadas en Swift: Uso y Ejemplos Prácticos
04:48 min - 6

Propiedades Lazy en Programación: Uso y Ventajas
07:16 min - 7

Propiedades Computadas en Swift: Uso y Ejemplos Prácticos
10:30 min - 8

Computed properties de solo lectura en Swift
05:14 min - 9

Observers en Swift: willSet y didSet
07:18 min - 10

Variables estáticas en clases, estructuras y enumerados
Viendo ahora
Métodos, subíndices y herencia
- 11

Métodos de instancia en Swift con self
07:35 min - 12

Métodos Mutantes en Estructuras y Enumerados en Swift
09:05 min - 13

Métodos de clase en Swift: static vs class
10:50 min - 14

Subíndices en Swift: Sintaxis y Aplicaciones Prácticas
09:01 min - 15

Manipulación de Matrices y Subíndices en Programación
12:27 min - 16

Herencia de Clases en Programación Orientada a Objetos
10:14 min - 17

Sobrescritura de Métodos y Propiedades en Clases Derivadas
12:11 min
Inicializadores o constructores
- 18

Inicializadores en Sweet: Creación y Uso Efectivo de Constructores
06:50 min - 19

Modificación de Constructores y Parámetros Opcionales en Swift
10:10 min - 20

Constructores Designados y de Conveniencia en Herencia de Clases
09:37 min - 21

Constructores y manejo de inicialización opcional en Swift
08:42 min - 22

Destructores en Programación: Liberación de Recursos Automática
07:12 min
Encadenamiento opcional
Conclusión
Domina las propiedades de tipo en Swift con ejemplos claros. Aquí entenderás cuándo usar static y class para crear valores compartidos entre todas las instancias, cómo acceder a ellos y qué diferencias hay en struct, enum y class. Así tomarás decisiones seguras y evitarás errores comunes.
¿Qué es una property de tipo static en Swift?
Las propiedades de tipo son valores compartidos por todas las instancias de un mismo tipo. Se declaran con static y no pertenecen a un objeto concreto, sino al tipo en sí. Esto aplica a struct, enum y class.
- Una type property no se accede desde la instancia.
- Se accede desde el nombre del tipo: Tipo.propiedad.
- Puede ser stored property o computed property.
¿Cómo se declara una stored type property con static?
Ejemplo en struct con una stored property y una propiedad de instancia:
struct SomeStruct {
static var storedTypeProperty: String = "some value"
var counter: Int = 0
}
var instanceStr = SomeStruct()
var otherInstance = SomeStruct()
// Acceso correcto a la propiedad de tipo:
let v1 = SomeStruct.storedTypeProperty
// Acceso incorrecto desde la instancia (no compila):
// instanceStr.storedTypeProperty
- storedTypeProperty es común a todas las instancias.
- counter pertenece a cada objeto y sí aparece en la instancia.
¿Cómo funciona una computed type property?
También puedes definir una computed property de tipo con static en una struct:
struct SomeStruct {
static var storedTypeProperty: String = "some value"
static var computedTypeProperty: Int { 1 }
var counter: Int = 0
}
let c = SomeStruct.computedTypeProperty // 1
- Las computed type properties no dependen de una instancia concreta.
- Se consultan así: SomeStruct.computedTypeProperty.
¿Cómo aplicar static en structs y enums?
En struct y enum puedes declarar tanto stored como computed con static. El acceso siempre es desde el tipo. No necesitas crear una instancia para leer o modificar estas propiedades (si son variables).
¿Se pueden usar en enums sin casos?
Sí. Un enum puede tener solo propiedades de tipo y cero casos si lo necesitas.
enum SomeEnum {
static var storedTypeProperty: String = "some value"
static var computedTypeProperty: Int { 5 }
}
let a = SomeEnum.storedTypeProperty // "some value"
let b = SomeEnum.computedTypeProperty // 5
- Las propiedades viven en el enum y son compartidas por todo el tipo.
- Es útil para constantes comunes o configuraciones.
¿Cómo acceder a las propiedades de tipo?
- Desde el tipo: SomeStruct.storedTypeProperty o SomeEnum.computedTypeProperty.
- Nunca desde la instancia: instance.propiedad no funciona para type properties.
¿Qué cambia en clases con class y sobrescritura?
En class, además de static, existe class var para propiedades de tipo. La clave: una computed type property declarada con class puede sobrescribirse en subclases; si usas static, no.
¿Cómo se declara y cuándo usar class var?
Usa class var cuando quieras permitir que una subclase redefina el valor calculado.
class SomeClass {
static var storedTypeProperty: String = "some value"
static var fixedComputedTypeProperty: Int { -9 } // no sobreescribible
class var overrideableComputedTypeProperty: Int { 108 } // sobreescribible
}
class ChildClass: SomeClass {
override class var overrideableComputedTypeProperty: Int { 42 }
}
let fixed = SomeClass.fixedComputedTypeProperty // -9
let base = SomeClass.overrideableComputedTypeProperty // 108
let child = ChildClass.overrideableComputedTypeProperty // 42
- static en class: no permite sobrescritura.
- class var en class: permite que una subclase cambie el cálculo.
¿Para qué casos prácticos sirve una type property?
- Contador global asociado a un tipo.
- Constantes compartidas como un valor numérico fijo.
- Presupuesto común en un modelo de familia, donde todas las instancias comparten el mismo saldo.
Idea de práctica: modela un presupuesto de comida compartido con static para registrar gastos y aportes entre miembros. Úsalo para razonar sobre acceso desde el tipo y evitar modificarlo desde la instancia.
¿Tienes una implementación de presupuesto compartido u otra idea que aproveche static y class? Cuéntala en comentarios y comparte tu enfoque.