Objective C: convert a NSMutableString in NSString

cyclingIsBetter picture cyclingIsBetter · Apr 7, 2011 · Viewed 48.9k times · Source

I have an NSMutableString, how can I convert it to an NSString?

Answer

Regexident picture Regexident · Apr 7, 2011

Either via:

NSString *immutableString = [NSString stringWithString:yourMutableString];

or 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.

Being a subclass of NSString however you can just cast it to an NSString

NSString *immutableString = yourMutableString;

making it appear immutable, even though it in fact stays mutable.
Many methods actually return mutable instances despite being declared to return immutable ones.