2009-08-11 5 views

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.

+2

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. –

+0

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. –

+1

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

Questions connexes