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 回答