scusa se si tratta di una domanda stupida. Ho appena iniziato a imparare velocemente. Io uso principalmente php per il mio lavoro quotidiano. Swift libro di testo di Apple Store utilizza il seguente esempio (ho modificato in una versione più breve) per dimostrare l'utilizzo di riferimenti deboli:Perché Swift non dispone automaticamente riferimenti circolari (cicli di riferimento forti)
class Person {
var apartment: Apartment?;
}
class Apartment {
weak var tenant: Person?;
}
var john: Person?; john = Person();
var number73: Apartment?; number73 = Apartment();
john!.apartment = number73; number73!.tenant = john; //circular reference here
john = nil; number73 = nil; //deference from static variable names
Nella definizione Apartment classe superiore, se i deboli parola chiave viene rimossa da ten tenant, crea un forte ciclo di riferimento nel seguente codice in modo che le due istanze non vengano eliminate da GC. Tuttavia, mi sembra che il GC non abbia realmente bisogno dell'indicazione del riferimento debole. È ovvio che le due istanze non possono essere collegate da alcuna variabile nello scope corrente o da qualsiasi variabile statica, quindi sono sicure da smaltire.
Perché dosare Swift forzare la sintassi? L'unico vantaggio che riesco a capire è che la parola chiave debole evidenzia la logica in modo che il codice sia più facile da leggere.
"Swift non utilizza la garbage collection mark-and-sweep, utilizza il conteggio dei riferimenti" fornisce la spiegazione. –