Im nouveau à obj-c et ont du mal à comprendre la fonction autorelease. quelqu'un pourrait-il m'expliquer quand je devrais l'utiliser? et comment est-ce différent de la libération. dois-je également réinitialiser le pool autorelease? Comment? et quand?objectif-c autorelease
Répondre
L'appel autorelease
programme un release
message à être envoyé à un objet dans un avenir proche en ajoutant l'objet au plus haut NSAutoreleasePool
. Lorsqu'un pool reçoit le message drain
, il envoie release
à tous les objets qui y ont été ajoutés.
autorelease
est utilisé dans des situations où une méthode ou une fonction doit abandonner sa propriété d'un objet, mais doit l'empêcher d'être temporairement afin que son appelant puisse faire quelque chose avec elle. Il est également utile dans la création de méthodes «pratiques» qui enveloppent alloc
, initWith...
et autorelease
pour rendre le code qui alloue des objets plus simple.
donc j'ai besoin de drainer NSAutoreleasePool manuellement à droite? ce n'est pas la collecte des ordures? Quand dois-je appeler la méthode de vidange? – Yazzmi
Vous n'avez pas besoin de vider le NSAutoreleasePool principal, il va ramasser les ordures. Cependant, si vous créez votre propre NSAutoreleasePool, vous devez le libérer vous-même. Dans le cas où vous avez du code qui alloue beaucoup d'objets auto-libérés (beaucoup de mémoire), vous pouvez vider le pool pour libérer cette mémoire instantanément quand il n'est plus nécessaire. Si tel est le cas, vous devez configurer un nouveau NSAutoreleasePool pour ce scénario et l'éliminer au lieu de vider le pool principal/d'application. – Merrimack
Ce n'est pas vrai qu'il va ramasser les ordures - l'iPhone n'a pas de ramasse-miettes. Le système crée cependant un pool avant d'envoyer un événement à partir du cycle principal et de le vider après le traitement de l'événement. – rpetrich
Lorsque vous envoyez -autorelease
à un objet, il est ajouté à une liste (le pool autorelease) et lorsque le pool est libéré ou drainé, chaque objet de la liste reçoit un message -release
.
Autorelease n'est rien mais un mécanisme de message retardé.
- 1. Autorelease NSString
- 2. Remplir conditionnellement un tableau d'un autre tableau - objectifC
- 3. Autorelease pour CGMutablePathRef?
- 4. unarchiveObjectWithFile conserve/autorelease nécessaire?
- 5. UITableViewCell, dequeue et autorelease?
- 6. autorelease objet précédent par cession
- 7. Nombre d'objets dans Autorelease Pool
- 8. Objet Autorelease retourné par NSArray?
- 9. NSOperation et le pool Autorelease
- 10. autorelease provoque piscine accident dans l'application RubyCocoa
- 11. Flux de travail du pool autorelease
- 12. Autorelease pools dans les applications appkit
- 13. Autorelease et NSString dans Objective C
- 14. compte de référence Objective-C et AutoRelease
- 15. Méthodes qui appellent méthodes: bases de Autorelease?
- 16. Pourquoi cette autorelease mailString serait-elle redondante?
- 17. Création d'objets autorelease dans le développement iPhone
- 18. Quand le pool autorelease est déclenché
- 19. Question relative à la fonction autorelease
- 20. Les pools multithread et autorelease fonctionnent-ils ensemble dans Cocoa?
- 21. Utilisez autorelease avant d'ajouter des objets à une collection?
- 22. Quelle est la portée des pools autorelease (imbriqués)?
- 23. Lorsque vous utilisez autorelease, quand est-il réellement publié?
- 24. Piscines AutoRelease dans un pour le « contexte de
- 25. Effet de 'myObj = [[[[MyClass alloc] init] autorelease] conserve];'?
- 26. Gestion de la mémoire Objective-C (alloc et autorelease)
- 27. Gestion de la mémoire Autorelease contre Alloc Question
- 28. Clarification sur la gestion de la mémoire IPhone (Autorelease)
- 29. comment trouver des objets avec le message autorelease?
- 30. Utilisation des pools autorelease pour la méthode fetch
duplication possible de [Comprendre le comptage des références avec Cocoa/Objective C] (http://stackoverflow.com/questions/6578/understanding-reference-counting-with-cocoa-objective-c) –