Sobes.tech
Junior — Middle

Quais são as convenções e limitações associadas ao uso de propriedades fracas em sistemas de software?

sobes.tech IA

Resposta da IA

As referências fracas (weak references) no iOS são usadas para evitar ciclos de referências fortes e fugas de memória, especialmente no ARC (Contagem Automática de Referências). No entanto, o seu uso tem várias condições e limitações importantes:

  • Um objeto pode ser libertado a qualquer momento, se não houver referências fortes a ele. Isto significa que uma propriedade fraca pode tornar-se nil de repente, e deve sempre verificar-se se é nil antes de a usar.
  • Propriedades fracas não são adequadas para armazenar objetos cujo ciclo de vida deve ser garantido. Se um objeto precisa de durar mais do que uma referência forte, uma referência fraca não o manterá.
  • Nem todos os tipos podem ser declarados como weak. Por exemplo, em Swift, referências fracas só podem ser a classes (tipos de referência), não a estruturas ou enumerações.
  • Referências fracas não funcionam diretamente com closures. Para evitar ciclos de retenção em closures, usa-se uma lista de captura com weak ou unowned.

Exemplo de uso de referência fraca em Swift:

class ViewController: UIViewController {
    weak var delegate: SomeDelegate? // referência fraca para evitar ciclo
}

// Deve sempre verificar se delegate não é nil antes de chamar os métodos
if let delegate = delegate {
    delegate.doSomething()
}