Ok, donc j'ai une méthode qui prend un NSString
en entrée, fait une opération sur le contenu de cette chaîne, et retourne la chaîne traitée. Ainsi, la déclaration est:Devrais-je retourner un NSMutableString dans une méthode qui retourne NSString
- (NSString *) processString: (NSString *) str;
La question: dois-je revenir juste le NSMutableString
exemple que je mon « travail » tampon, ou devrais-je créer un nouveau NSString
autour de celui mutable, et le retour qui?
dois-je faire donc ceci:
- (NSString *) processString: (NSString *) str
{
NSMutableString *work = [NSMutableString stringWithString: str];
// process 'work'
return work;
}
Ou ceci:
- (NSString *) processString: (NSString *) str
{
NSMutableString *work = [NSMutableString stringWithString: str];
// process 'work'
return [NSString stringWithString: work]; // or [work stringValue]?
}
Le deuxième fait une autre copie de la chaîne Je retourne, à moins que NSString
fait des choses intelligentes comme la copie sur -modifier. Mais le premier renvoie quelque chose que l'appelant pourrait, en théorie, aller modifier plus tard. Je m'en fous s'ils le font, puisque la corde est la leur. Mais y a-t-il des raisons valables de préférer cette dernière forme à la première? Et, est stringWithString
ou stringValue
préféré par rapport à l'autre?