如何将NSString初始化为NSMutableString?
-
08-07-2019 - |
题
有没有办法将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的新初始化副本。
其他提示
NSString *someImmutableString = @"something";
NSMutableString *mutableString = [someImmutableString mutableCopy];
重要! mutableCopy
返回您拥有的对象,因此您必须释放或自动发布它。
您可以将NSMutableString设置为NSString,但不能将其设置为
NSString *str = [NSMutableString alloc]init];
没关系,但是
NSMutableString *str = [[NSString alloc]init];
不是。这是因为NSMutableString是NSString的子类,因此它是'NSString。 但是,您可以使用
从NSString创建可变字符串NSMutableString *mStr = [str mutableCopy];
Swift 2.0
对于Swift用户,以下内容适用于Xcode 7。
var str : String = "Regular string"
var mutableStr : NSMutableString = NSMutableString(string: str)
不隶属于 StackOverflow