Em Swift, referência não proprietária x fraca [duplicado]
Esta pergunta já tem uma resposta aqui:
Qual é a diferença entre uma referência fraca e uma referência não proprietária? 8 respostasSe você tem umCão com uma fraca referência aOsso, isso significa que o cão é o 'proprietário' da referência nessa situação e usa osso, mas o osso pode deixar de existir e o cão ainda pode funcionar (porque a referência ao osso é opcional).
No entanto, com 'sem dono', parece que a palavra-chave 'sem dono' é usada não na declaração de referência do proprietário, mas no outro objeto. Por exemplo, a referência de Bone a seu cachorro é marcada como 'sem dono'.
Sem dono não é seguro. Pode travar se o proprietário deixar de existir em algum momento do programa e não puder ser opcional. Por que alguém usaria sem dono em oposição a uma referência fraca?
Por que não usar apenas fraco? do meu entendimento, isso tem a ver com falhar alto vs. falhar silenciosamente. No caso de um sem dono, o aplicativo sempre trava se o osso acabar sem um cachorro, enquanto se usarmos fraco, você acabará com um osso que ainda existe, com um cachorro 'fantasma'.