NSMutableStringがありますが、NSStringに変換するにはどうすればよいですか?
次のいずれかを介して:
NSString *immutableString = [NSString stringWithString:yourMutableString];
または経由:
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.
NSStringのサブクラスであるが、NSStringにキャストするだけです。
NSString *immutableString = yourMutableString;
実際には可変のままですが、不変に見えます。
多くのメソッドは、不変インスタンスを返すように宣言されているにもかかわらず、実際に可変インスタンスを返します。
NSMutableString
はNSString
のサブクラスであるため、型キャストすることができます。
NSString *string = (NSString *)mutableString;
この場合、string
はmutalbeString
のエイリアスになりますが、コンパイラで可変メソッドを呼び出そうとすると文句を言います。
また、クラスメソッドで新しいNSStringを作成できます。
NSString *string = [NSString stringWithString:mutableString];