sen*_*thu 6 iphone casting objective-c nsmutablestring
有没有办法将NSString初始化为NSMutableString?还是逆序?
-(void)st:(NSString *)st
{
NSMutableString str = st; // gives warning..
NSLog(@"string: %@", str);
}
Run Code Online (Sandbox Code Playgroud)
not*_*oop 10
NSString是一个不可变的表示(或最糟糕的只读视图).因此,NSMutableString如果您知道它是可变的或者制作可变副本,则需要转换为a :
-(void)st:(NSString *)st
{
NSMutableString *str = [[st mutableCopy] autorelease];
NSLog(@"string: %@", str);
}
Run Code Online (Sandbox Code Playgroud)
我自动释放它因为mutableCopy返回一个保留计数为1的新初始化副本.
您可以将 NSMutableString 设置为 NSString,但反之则不行
NSString *str = [NSMutableString alloc]init];
Run Code Online (Sandbox Code Playgroud)
没关系,但是
NSMutableString *str = [[NSString alloc]init];
Run Code Online (Sandbox Code Playgroud)
不是。这是因为 NSMutableString 是 NSString 的子类,因此它“是”NSString。但是,您可以使用 NSString 创建可变字符串
NSMutableString *mStr = [str mutableCopy];
Run Code Online (Sandbox Code Playgroud)