如何将NSString初始化为NSMutableString?

问题描述 投票:0回答:4

有什么方法可以将 NSString 初始化为 NSMutableString 吗?还有相反的顺序?

objective-c iphone casting nsmutablestring
4个回答
11
投票

NSString
是一种不可变的表示(或者最坏的情况是只读视图)。因此,如果您知道它是可变的,则需要转换为
NSMutableString
或制作一个可变副本:

-(void)st:(NSString *)st
{
  NSMutableString *str =  [[st mutableCopy] autorelease];
  NSLog(@"string: %@", str);
}

我自动释放了它,因为

mutableCopy
返回了一个新初始化的副本,保留计数为1。


4
投票
NSString *someImmutableString = @"something";
NSMutableString *mutableString = [someImmutableString mutableCopy];

重要!

mutableCopy
返回一个您拥有的对象,因此您必须释放或自动释放它。


4
投票

您可以将 NSMutableString 设置为 NSString,但反之则不行

NSString *str =  [NSMutableString alloc]init];

没关系,但是

NSMutableString *str = [[NSString alloc]init];

不是。这是因为 NSMutableString 是 NSString 的子类,因此它“是”NSString。 但是,您可以使用

从 NSString 创建可变字符串
NSMutableString *mStr = [str mutableCopy];

1
投票

斯威夫特2.0

对于 Swift 用户,以下内容适用于 Xcode 7。

var str : String = "Regular string"
var mutableStr : NSMutableString = NSMutableString(string: str)
© www.soinside.com 2019 - 2024. All rights reserved.