Objective C:在NSString中转换NSMutableString

时间:2011-04-07 15:22:03

标签: objective-c nsstring nsmutablestring

我有一个NSMutableString,如何将其转换为NSString?

2 个答案:

答案 0 :(得分:93)

通过:

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;

使它看起来不可变,即使它实际上仍然是可变的 尽管声明返回不可变的实例,但许多方法实际上返回了可变实例。

答案 1 :(得分:3)

NSMutableStringNSString的子类,因此您可以对其进行类型转换:

NSString *string = (NSString *)mutableString;

在这种情况下,string将是mutalbeString的别名,但如果您尝试在其上调用任何可变方法,编译器会抱怨。

此外,您可以使用类方法创建新的NSString:

NSString *string = [NSString stringWithString:mutableString];