J'ai un NSMutableString, comment puis-je le convertir en NSString?
Soit via:
NSString *immutableString = [NSString stringWithString:yourMutableString];
ou via:
NSString *immutableString = [[yourMutableString copy] autorelease];
//Note that calling [foo copy] on a mutable object of which there exists an immutable variant
//such as NSMutableString, NSMutableArray, NSMutableDictionary from the Foundation framework
//is expected to return an immutable copy. For a mutable copy call [foo mutableCopy] instead.
Étant une sous-classe de NSString, vous pouvez simplement le convertir en NSString
NSString *immutableString = yourMutableString;
le faisant apparaître immuable, même s'il reste en fait mutable.
De nombreuses méthodes retournent en fait des instances mutables bien qu'elles aient été déclarées renvoyer des instances immuables.
NSMutableString
est une sous-classe de NSString
, vous pouvez donc simplement la transtyper:
NSString *string = (NSString *)mutableString;
Dans ce cas, string
serait un alias de mutalbeString
, mais le compilateur se plaindrait si vous tentiez d'appeler des méthodes mutables dessus.
Vous pouvez également créer une nouvelle NSString avec la méthode de classe:
NSString *string = [NSString stringWithString:mutableString];