Pointeur
Salut les amis
J'ai un tableau d'objet, j'ajoute des objets et tout est Ok.
Si j'appel ce tableau là depuis une autre view je m'aperçoit que les valeurs ont disparut (mais apparemment l'adresse rest...peut être).
Donc si j'accède au tableau listUserInfo à l'index 1 par exemple,
La propriété 1 a bien la valeur "TYPE0",
alors que la propriété 2 n'a plus la valeur (ex:"Yafou").
Pour info, si jee rempace la variable FirstName par une valeur en dure ça marche.
Voilà , et merci à tous.
J'ai un tableau d'objet, j'ajoute des objets et tout est Ok.
Si j'appel ce tableau là depuis une autre view je m'aperçoit que les valeurs ont disparut (mais apparemment l'adresse rest...peut être).
<br />NSString *FirstName =[NSString stringWithUTF8String:(char *)sqlite3_column_text(selectstmt, 5)];<br />//NSlog(FirstName); --> Donne bien la valeur<br />UserINFO * userInfo = [[UserINFO alloc] initWithName :@"TYPE0" :FirstName ""];<br />[listUserInfo addObject:userInfo];<br /><br />
Donc si j'accède au tableau listUserInfo à l'index 1 par exemple,
La propriété 1 a bien la valeur "TYPE0",
alors que la propriété 2 n'a plus la valeur (ex:"Yafou").
Pour info, si jee rempace la variable FirstName par une valeur en dure ça marche.
Voilà , et merci à tous.
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
UserINFO * userInfo = UserINFO alloc] initWithName :[b]@"TYPE0" :FirstName ""[/b;
C'est de la concaténation de chaà®ne que tu veux faire ?
C'est le genre d'erreurs de retain/release .
cette ligne la c'est l'appel à une fonction que je lui passe 2 paramètres.
Je n'ai pas fait de release.
Il serait normal d'enchaà®ner un release sur cet objet :
UserINFO * userInfo = [[UserINFO alloc] initWithName :@TYPE0 :FirstName];
[listUserInfo addObject:userInfo];
[userInfo release];
2) Firstname est créé lui par une "convenient method" . Il est donc en mode autorelease.
Il faut qu'il reçoive un retain dans la méthode initWithName: : si on veut qu'il ne reçoive de message de déallocation, lorsqu'il sera libéré par l'autoreleasepool.
C'est claire, j'ai corrigé et ça marche.
Merci et Merci.
je tacherais à chercher la signification d'une méthode : convenient method
@+
C'est tout simple . prenons l'exemple des méthodes de construction d'une chaà®ne NSString
On trouve des méthodes qui commencent par init
– init
– initWithBytes:length:encoding:
– initWithBytesNoCopy:length:encoding:freeWhenDone:
– initWithCharacters:length:
– initWithCharactersNoCopy:length:freeWhenDone:
– initWithString:
– initWithCString:encoding:
– initWithUTF8String:
– initWithFormat:
– initWithFormat:arguments:
– initWithFormat:locale:
– initWithFormat:locale:arguments:
– initWithData:encoding:
et d'autres qui commencent par string :
+ stringWithFormat:
+ localizedStringWithFormat:
+ stringWithCharacters:length:
+ stringWithString:
+ stringWithCString:encoding:
+ stringWithUTF8String:
Les premières associées à un alloc renvoie l'objet créé en mode retain
Les secondes sont ds convenient methods, renvoyant les objets en autorelease.
Il est bon quand on fait ses propres méthodes de respecter ces conventions de nommage.
Merci l'ami pour tous ses info.