Je veux voir exactement comment cela crée un tableau. Comment puis-je afficher les fichiers .m qui montrent comment cela se fait? P>
4 Réponses :
Non, le cacao n'est pas open source.
Si vous avez une question, vous devriez simplement le demander. P>
Ce serait un moyen valide de l'implémenter: p> Vous pouvez lire la source Gnustep pour Nsarray , mais sachez qu'il s'agit d'une autre mise en œuvre de la API de cacao. P> p>
Si vous demandez quel est le but de + arraywitharray code> (en plus d'être un wrapper automatique autour de
-Initwitharray code>), je dirais que c'est ceci: utilisez-le quand vous Voulez-vous créer une copie autorélisée d'un tableau. En d'autres termes, vous pouvez le voir comme ceci:
NSArray * original = /* ... */;
NSArray * newArray = [[original copy] autorelease];
Ce n'est pas entièrement vrai. Votre hypothèse est que original code> est un nsarray. Mais cela peut être quelque chose dérivé de Nsarray. Et la classe de l'objet peut implémenter son propre
copier code>. Par conséquent,
[[[Copie originale] AutoRelease]; code> n'est pas garanti de renvoyer un NSARRAY.
Comme @ken mentionné, vous ne pouvez pas voir la source (bien que vous puissiez démonter la méthode via GDB).
La méthode elle-même crée une forte> immuable forte> (ne peut pas être changée), choisissez celui que vous aimez en fonction de la brièveté, je suppose: -). P> P>
Hmmm ... c'est immuable? Eh bien, j'ai besoin d'envoyer chaque objet dans la nouvelle array un message de libération supplémentaire (ALLOC INIT d'occasion), donc il n'y a aucune fuite. Comment libérer tous les objets d'un tableau immuable?
Les objets sont retenus par la matrice lorsqu'ils sont ajoutés, donc lorsque le tableau est libéré, les objets à l'intérieur doivent également être libérés.
Pourquoi avez-vous besoin d'un nouveau tableau pour envoyer un message de libération aux objets? Impossible signifie que la matrice ne peut pas être modifiée, vous pouvez toujours modifier (ou envoyer des messages à) objets à l'intérieur du tableau ... ou mieux encore, des objets AutoRelease avant de les ajouter au tableau, puis vous n'avez pas à vous soucier de quoi que ce soit.
gnustep, la mise en œuvre de GNU de la spécification OpenStep de laquelle cacao et cacao touch descend, implémente http://svn.gna.org/viewcvs/gnustep /Libs/base/trunk/source/nsarray.M?View=markup p> p> + arraywitharray: code> comme suit: