[英]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用户,以下适用于Xcode 7。
var str : String = "Regular string"
var mutableStr : NSMutableString = NSMutableString(string: str)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.