Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

289
Visualizações
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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda