Se utilizzo una categoria che utilizza objc_setAssociatedObject
per aggiungere pseudo proprietà a un oggetto, come posso assicurarmi che vengano rilasciati correttamente? Devo rilasciarli manualmente in dealloc
?Come rilasciare oggetti associati tramite objc_setAssociatedObject?
risposta
Il comportamento assegnato determina la modalità di gestione della memoria per il tipo. Se scegli di conservare o copiare l'oggetto verrà rilasciato quando l'istanza della classe a cui aggiungi il riferimento associato viene deallocato. Ciò rende preferibili le operazioni di conservazione e copia preferite per le classi Objective-C. L'assegnazione è utile anche per evitare i cicli di conservazione purché il riferimento a zero sia eseguito con l'oggetto.
Costanti
OBJC_ASSOCIATION_ASSIGN Specifica un debole riferimento all'oggetto associato .
OBJC_ASSOCIATION_RETAIN_NONATOMIC Specifica un forte riferimento all'oggetto associato, e non l'associazione sia fatto atomicamente.
OBJC_ASSOCIATION_COPY_NONATOMIC Specifica che l'oggetto associato viene copiato, e che l'associazione non è fatta atomicamente.
OBJC_ASSOCIATION_RETAIN Specifica un riferimento forte a l'oggetto associato e che l'associazione è stata creata in modo atomico.
OBJC_ASSOCIATION_COPY Specifica che l'oggetto associato viene copiato, e che l'associazione è stata creata in modo atomico.
Anche se è risposto alla tua domanda, ancora, dal momento che non hai incluso il testo documenti in sé, e la pagina si è collegato al non è più disponibile, qui è per la convenienza di altri:
Da apple Objective-C runtime di riferimento
void objc_removeAssociatedObjects(id object)
Rimuove tutte le associazioni per un dato oggetto.
Lo scopo principale di questa funzione è quello di rendere più facile per restituire un oggetto ad una "stato originario”. Si consiglia di non utilizzare questa funzione per rimozione generale di associazioni provenienti da oggetti, in quanto rimuove anche associazioni che altro i clienti possono aver aggiunto all'oggetto. in genere si dovrebbe usare
objc_setAssociatedObject
con un valore zero a chiaro un'associazione.
- 1. Oggetti associati Objective-C che perdono sotto ARC
- 2. Come funziona objc_setAssociatedObject?
- 3. objc_setAssociatedObject non disponibile nel simulatore iPhone
- 4. awesome_print non mostra oggetti associati
- 5. Convalida max importo af oggetti associati
- 6. Come posso definire più oggetti associati usando Factory Girl?
- 7. Come allocare correttamente e rilasciare oggetti box2d in cocos2d, iOS
- 8. Utilizzo di objc_setAssociatedObject con riferimenti deboli
- 9. Rails 3 trova tutti i record associati has_many: tramite
- 10. Convalida che un oggetto ha uno o più oggetti associati
- 11. Come rilasciare una raccolta in MongoDB?
- 12. Come passare oggetti complessi tramite SignalR?
- 13. Come rilasciare MPMoviePlayerController?
- 14. Come rilasciare un blocco
- 15. Rilasciare una proprietà UIImage di mantenimento caricata tramite imageNamed?
- 16. django non può rilasciare il DB di test tramite pgbouncer
- 17. Ricerca tramite oggetti nell'array swift
- 18. Come rilasciare possibili blocchi di riga Postgres?
- 19. Come rilasciare correttamente Android MediaPlayer
- 20. Come rilasciare un programma semplice
- 21. Rails 4: Come usare includes() con where() per recuperare gli oggetti associati
- 22. Trascinare e rilasciare in MobileSafari?
- 23. quali eventi sono associati?
- 24. "<-" e valori associati
- 25. Come rilasciare e disporre tutti gli oggetti con ambito Http sull'istanza Container?
- 26. opencv - rilevamento oggetti tramite rilevamento funzionalità
- 27. Come trovo gli eventi javascript misteriosamente associati
- 28. Elimina oggetti in Django tramite link html
- 29. Invia oggetti digitati tramite TCP o socket
- 30. Rails - Eliminazione di record associati non salvati
E 'stato veloce :) ma non è la risposta che cercavo. dovrei avere stato più specifico nella mia domanda, sry. – radiospiel
@ra diospiel Ho affermato che sopra, conservare o copiare rilascerà l'oggetto per te "l'oggetto verrà rilasciato quando la classe a cui aggiungi il riferimento associato viene rilasciato" – Joe
@JoshCaswell Grazie, sarebbe il termine corretto. – Joe