Dans Objective-c J'ai ceci:libérant des tableaux objectif-c
SomeObject *values[3][3];
quand désaffecter, comme en C++ dois-je libérer élément par élément?
Ou si je fais:
[values release];
est ok?
Dans Objective-c J'ai ceci:libérant des tableaux objectif-c
SomeObject *values[3][3];
quand désaffecter, comme en C++ dois-je libérer élément par élément?
Ou si je fais:
[values release];
est ok?
release
ne s'applique qu'aux objets Objective-C. Un tableau de style C (comme vous avez là-bas) est juste un peu de mémoire de pile.
Dans votre cas, il semble que vous l'utilisiez pour stocker 3x3 = 9 objets Objective-C. Si vous voulez tous les libérer, vous devez le faire élément par élément. L'analogie C++ ne tient pas dans ce cas car le tableau lui-même n'est pas un objet Objective-C.
(Si vous teniez des choses dans un NSMutableArray, la réponse serait différente. Vous devriez examiner cette question par la voie.)
Il est un tableau de pointeurs. Juste values
points au premier objet, donc [values release]
ne publiera que le premier objet. Vous devez libérer chaque objet dans le tableau.
Ceci est incorrect, [Validation des valeurs] ne libère pas le premier objet dans le tableau. Mais [Valeurs [0] libération] sera. –
@invariant: Ceci est incorrect, '[values [0] release]' ne publiera pas le premier objet dans le tableau * 2D *. Mais '[values [0] [0] release]' sera. – kennytm