Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

284
Vistas
Referencia opcional sin dueño versus débil en Swift 5.0

Esto está permitido en Swift 5.0:

 class Person { unowned var child: Person? }

Esto está respaldado por estas notas de la versión :

Las variables sin propietario y sin propietario (no seguras) ahora admiten tipos opcionales. (47326769)

Entendí exactamente la diferencia entre débil y sin dueño en Swift 4.2 y antes. Sin embargo, no estoy seguro de por qué Apple decidió hacer del tipo unowned un tipo optional . Incluso en los documentos (que son documentos para Swift 5.0) esta 'propuesta' implementada (¿dónde puedo encontrar esa propuesta con la motivación para agregar referencias opcionales sin dueño?) no está actualizada, porque dice:

Se espera que una referencia sin dueño siempre tenga un valor. Como resultado, ARC nunca establece el valor de una referencia sin propietario en cero, lo que significa que las referencias sin propietario se definen utilizando tipos no opcionales.

Lo anterior ya no es cierto. La única diferencia funcional que afirma Apple es que se espera que una referencia unowned tenga una vida útil igual o más larga que el objeto que contiene esa referencia. Bueno, tengo curiosidad sobre el uso técnico de esto.

¿Qué diferencia hay cuando uso una referencia weak frente a una referencia opcional unowned ? ¿O es la única diferencia que se debe usar opcionalmente unowned cuando el objeto de referencia tiene una vida útil más larga? Me imagino que debe haber más...

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Ha entendido mal la nota de la versión y el significado del cambio en el idioma.

por qué Apple decidió hacer de los sin dueño un tipo opcional

no lo hicieron Usted puede, y generalmente lo hará, todavía decir

 unowned let owner : MyViewController

El único cambio aquí es que la variable sin dueño puede ser Opcional, lo que antes era ilegal. Este cambio se encarga de un caso extremo molesto, eso es todo.

Arriba ya no es cierto

Sí, lo es. Las cosas están completamente sin cambios desde antes:

  • Las referencias débiles deben escribirse como Opcional; no retienen el objeto al que se hace referencia, pero rastrean el objeto al que se hace referencia y vuelven a nil si ese objeto deja de existir.
  • Las referencias sin propietario no retienen el objeto al que se hace referencia y no rastrean el objeto al que se hace referencia, por lo que depende de usted evitar que ese objeto desaparezca o puede terminar con un puntero colgando y un bloqueo.

Lo único que cambió es que solía haber una regla adicional de que un tipo de referencia sin propietario no podía ser Opcional. Esa regla ahora se ha ido.

Como señala correctamente, si el tipo de referencia sin propietario es Opcional, debe ser una referencia var , no una referencia let (porque tener esto como Opcional no tendría sentido si no tuviera el poder de cambiarlo de nil a un valor real y viceversa).

Un caso de uso típico es muy parecido al que usted mismo proporcionó:

 class Node { unowned var parent: Node? }

Parece razonable decir que este Nodo puede o no tener un padre (porque podría estar en la parte superior del gráfico), pero si tiene un padre, ese padre no debería tener dueño (un padre debería retener a su hijo, pero un niño no debe retener a su padre). Anteriormente, la única forma de decir eso era hacer de esto una referencia débil, lo que implica una sobrecarga innecesaria y es ocioso, porque podemos garantizar absolutamente que si un nodo tiene un padre, el padre sobrevivirá al hijo. Ahora, puede decir lo que quiere decir, lo que generalmente es algo bueno.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda