69

NSMutableString がありますが、それを NSString に変換するにはどうすればよいですか?

4

2 に答える 2

104

いずれかを介して:

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;

実際には不変のままですが、不変に見えるようにします。
多くのメソッドは、不変のインスタンスを返すように宣言されているにもかかわらず、実際には可変のインスタンスを返します。

于 2011-04-07T15:23:15.137 に答える
4

NSMutableStringは のサブクラスなNSStringので、型キャストするだけです:

NSString *string = (NSString *)mutableString;

この場合、stringは のエイリアスになりますがmutalbeString、変更可能なメソッドを呼び出そうとすると、コンパイラは文句を言います。

また、クラス メソッドを使用して新しい NSString を作成することもできます。

NSString *string = [NSString stringWithString:mutableString];
于 2011-04-07T15:27:43.147 に答える