繁体   English   中英

如何将NSString初始化为NSMutableString?

[英]How to initialize NSString to NSMutableString?

有没有办法将NSString初始化为NSMutableString? 还是逆序?

-(void)st:(NSString *)st
{
  NSMutableString str = st; // gives warning..
  NSLog(@"string: %@", str);
}

NSString是一个不可变的表示(或者最糟糕的只读视图)。 因此,如果你知道它是可变的或者制作一个可变副本,你需要转换为NSMutableString

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

我自动释放它,因为mutableCopy返回一个保留计数为1的新初始化副本。

您可以将NSMutableString设置为NSString,但不能相反

NSString *str =  [NSMutableString alloc]init];

没关系,但是

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

不是。 这是因为NSMutableString是NSString的子类,因此它是'NSString。 但是,您可以使用NSString创建可变字符串

NSMutableString *mStr = [str mutableCopy];
NSString *someImmutableString = @"something";
NSMutableString *mutableString = [someImmutableString mutableCopy];

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

Swift 2.0

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

var str : String = "Regular string"
var mutableStr : NSMutableString = NSMutableString(string: str)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM