Lorsque je crée un NSArray
en utilisant + [NSArray arrayWithObjects:]
, copie-t-il ces objets? Si je libère les objets après les avoir ajoutés au tableau, vais-je rencontrer des problèmes?Est-ce que NSArray copie des objets?
15
A
Répondre
35
Non, il ne les copie pas. Il les retient. Oui, vous pouvez libérer les objets en toute sécurité après les avoir ajoutés au tableau.
The docs, comme toujours, sort ce très clairement:
Les tableaux maintiennent de solides références à leur contenu dans un environnement de mémoire gérée, chaque objet reçoit un message retain avant son id est ajouté au tableau et un message de libération lorsqu'il est supprimé du tableau ou lorsque le tableau est désalloué. Si vous souhaitez une collection avec des sémantiques de propriété d'objet différentes, utilisez plutôt CFArray Reference, NSPointerArray ou NSHashTable.
Questions connexes
- 1. NSArray avec des objets personnalisés dans NSTableDataSource
- 2. Comment ajouter facilement des objets CGPoint à un NSArray?
- 3. NSArray avec des types C?
- 4. NSArray ajouter des éléments
- 5. NSArray avec des valeurs
- 6. La copie systeme() échoue, alors que la copie cmd fonctionne
- 7. iPhone NSArray de Dictionnaire des valeurs Dictionnaire
- 8. @property (copie) - est-ce qu'une copie entière est faite?
- 9. Filtre NSArray iphone
- 10. NSArray de dates trier
- 11. initWithCapacity: dans NSArray
- 12. Cloner des objets dans VBA?
- 13. Dois-je stocker des objets entiers ou des pointeurs sur des objets dans des conteneurs?
- 14. Trier NSArray par NSDate, aujourd'hui
- 15. NSArray initWithObjects: ne se charge pas
- 16. Puis-je récupérer des objets que j'ai déjà utilisés?
- 17. NSArray de problème d'encodage URL
- 18. Puis-je configurer le tableau de pneus ci-dessous en tant que NSArray?
- 19. Objets mocking contenant des sous-objets avec des jacquements Rhino
- 20. Quelle est la convention standard pour créer un nouveau NSArray à partir d'un NSArray existant?
- 21. réutilisation des objets TableCellEditor
- 22. Que sont les «objets USER» de Windows?
- 23. Vérification des objets sérialisés
- 24. Passer des objets dans le cadre de SOAP Demander et récupérer des objets en tant que réponse .... using webservices
- 25. Affichage des objets associés
- 26. Arrondi des objets DateHeure
- 27. AS3 Filtrage des objets
- 28. Chiffrer des objets
- 29. Est-ce que CAM :: PDF de Perl est capable d'agréger des objets d'annotation?
- 30. Copie des informations ACL comme XCopy
Bonne réponse. Souvenez-vous également que + arrayWithObjects: retourne un tableau unowned ("autoreleased"), donc vous devez le conserver pour éviter de le perdre, mais l'objet dans le tableau sera aussi long que le tableau. –
Merci beaucoup! Vous devriez savoir que je recherche la documentation avant de poster sur Stack Overflow (parfois, je ne comprends pas tout, cependant). Merci d'avoir pris le temps de répondre à ma question. –
Merci pour la réponse - bien que ce texte ne soit plus dans la référence, FYI. Autant que je sache, toute cette section a disparu. Vous pouvez seulement l'inférer en regardant les informations de sous-classement et quelques-uns des appels de fonction, et cela principalement parce que vous m'avez indiqué dans la bonne direction. – RonLugge