Comment faire pour récupérer le énième caractère d'une chaine NSString ?
zenx
Membre
Bonjour !
J'ai une chaine NSString *chaine = @ma chaine. Je souhaiterais récupérer par exemple le deuxième caractère de cette chaine (ici, le 'a' de 'ma') dans une autre variable NSString *car. Comment dois je m'y prendre ?.
Merci
J'ai une chaine NSString *chaine = @ma chaine. Je souhaiterais récupérer par exemple le deuxième caractère de cette chaine (ici, le 'a' de 'ma') dans une autre variable NSString *car. Comment dois je m'y prendre ?.
Merci
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
[tt]
NSString *car=[NSString stringWithString:[chaine substringWithRange:NSMakeRange(2,1)]];
[/tt]
characterAtIndex: (qui renvoie un unichar)
entre
NSString *car=[chaine substringWithRange:NSMakeRange(2,1)];
et
NSString *car=[NSString stringWithString:[chaine substringWithRange:NSMakeRange(2,1)]];
La différence est elle dans le fait que pour la première forme, l'objet n'est pas placé dans l'autorelease pool au contraire de la deuxième forme ?
Les 2 chaà®nes sont placées dans l'autoreleasePool.
La première, car issue directement de substringWithRange:, et la seconde car issue de stringWithString: (et dont la chaà®ne en paramètre est elle-même dans l'autoreleasePool).
De manière générale, tout objet qui est créé/retourné par une méthode de classe/d'instance, et dont cette méthode n'est pas init..., est dans l'autoreleasePool.
.
Dans les 2 cas c'est dans l'autoreleasepool, comme tout objet retourné par une fonction, à part les init et autres cas particuliers qui sont mentionnés alors dans la doc.
Ce n'est que si tu crées explicitement des objets avec alloc/init que tu es en charge de les releaser toi même... ou de les mettre toi même dans l'autoreleasepool.