Qu'est-ce que le garbage collector Objective-C collecte exactement? Par exemple, si j'écris un programme en Objective-C 2.0, et que j'utilise des structures C simples, mon code doit-il s'inquiéter de libérer manuellement cette mémoire?Est-ce que la récupération de place Objective-C 2.0 collecte des structures C?
Répondre
Pour la mémoire de tas, vous êtes seul par défaut. Sauf si vous allouez de la mémoire de tas avec NSAllocateCollectable
ou NSReallocateCollectable
, ou si vous transférez explicitement un objet CoreFoundation au garbage collector via une API comme NSMakeCollectable
, le GC n'a aucune idée de votre mémoire et ne la gèrera pas pour vous. Inversement, lorsque GC est activé, les objets Objective-C créés avec +alloc
/-init
sont gérés par GC, à moins que vous ne le disiez explicitement avec un appel d'API complémentaire.
http://developer.apple.com/mac/library/documentation/Cocoa/Conceptual/GarbageCollection/
Si vous utilisez malloc()
d'allouer une structure sur le tas, alors je vraiment doute (la page de manuel ne mentionne rien à ce sujet, mais il est possible que Apple a récrit malloc
pour l'exécution ObjC2). Si vous utilisez NSAllocateCollectable()
, alors oui.
Si la structure a été créée sur la pile, il n'y a pas besoin de collecte, car elle sera détruite dès la sortie de la trame.
+1 Pour mentionner ce qui se passe à Structs alloué sur la pile. –
- 1. Demande de récupération de place?
- 2. Comportement de collecte de place avec des références cycliques isolées?
- 3. collecte des ordures Objective-c
- 4. Création et collecte de structures C++ dans une boucle
- 5. Meilleure façon d'empêcher la récupération de place rapide dans CLR
- 6. context.detach - pour la récupération de place
- 7. .net 2.0 C# récupération d'une valeur de xml
- 8. Pourquoi la récupération de place est-elle requise pour l'optimisation des appels de queue?
- 9. concernant la collecte des ordures. Pourquoi devons-nous appeler System.gc() ;?
- 10. Est-il possible d'arrêter la récupération de place .NET?
- 11. Reliure ObjectiveC classe C# problème
- 12. Comportement de récupération de place pour String.intern()
- 13. Utilisation de la récupération de place de graphique de Perl
- 14. Déclenchement externe d'une récupération de place .NET
- 15. Références croisées et récupération de place
- 16. Critères de déclenchement de la récupération de place dans .Net
- 17. Pourquoi l'objet spécifié est-il éligible pour la récupération de place?
- 18. Est-ce que la méthode de collecte des ordures CLR permet de lancer des références d'objets circulaires en toute sécurité?
- 19. Libération récursive des structures C
- 20. Structures de données C#
- 21. À quel point la récupération de place Javascript affecte-t-elle les performances?
- 22. C# Diminution de la performance de l'application due à la collecte des ordures?
- 23. structures de répertoires C++
- 24. C++/CLI: empêcher la récupération de place sur l'enveloppe gérée d'une ressource non gérée
- 25. Lua bindings à C++ et la collecte des ordures
- 26. Comment puis-je déterminer si une application Objective-C compilée utilise la récupération de place?
- 27. Tutoriel sur la collecte des ordures objective-c
- 28. Comportement étrange de récupération de place avec Websphere Portal Server
- 29. MVC utilisé dans la programmation ObjectiveC
- 30. Que signifie "GC--" dans un journal de récupération de place Java?
+1 Le Guide de programmation de la collecte des ordures est l'un des textes techniques les plus fascinants que j'ai jamais lus. –
NSAllocateCollectable est exactement ce que je cherchais, merci! –