Nel OS X v10.11 beta release notes, trovo il seguente:Che cosa è un "non-debole di riferimento azzeramento"
NSNotificationCenter e NSDistributedNotificationCenter inviare più notifiche agli osservatori registrati che possono essere deallocata. Se l'osservatore è in grado di essere memorizzato come riferimento di azzeramento debole, la memoria sottostante memorizza l'osservatore come riferimento debole di azzeramento. In alternativa, se l'oggetto non può essere memorizzato debolmente (poiché ha un meccanismo di conservazione/rilascio personalizzato che impedisce al runtime di essere in grado di archiviare debolmente l'oggetto) l'oggetto viene memorizzato come riferimento di azzeramento non debole. Ciò significa che agli osservatori non è richiesto di annullare la registrazione nel loro metodo di deallocazione. [emphasis mine]
Questo non ha senso per me. Se si tratta di un riferimento non debole, allora non sarebbe un riferimento forte? Quindi NSNotificationCenter sarebbe ancora un proprietario, quindi l'oggetto non avrebbe deallocato (fino alla registrazione non registrata manualmente), quindi in questo contesto è assurdo affermare che si tratta di "azzeramento".
Se si riferisce a una sorta di riferimento __unsafe_unretained
, la domanda è ... in che modo NSNotificationCenter potrebbe evitare di inviare messaggi a uno zombie?
Per un esempio di implementazione del tipo di swizzling Mi riferisco a, dare un'occhiata a [MAZeroingWeakRef] (https://github.com/mikeash/MAZeroingWeakRef/). –
Una risposta esaustiva e esattamente il tipo di spiegazione che speravo. Grazie! – natevw