如何将 NSString 初始化为 NSMutableString?

发布于 2024-08-13 09:41:58 字数 186 浏览 3 评论 0原文

有什么方法可以将 NSString 初始化为 NSMutableString 吗?并且还颠倒顺序?

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

Is there any way to initialize NSString to NSMutableString? and also reverse order?

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

Oo萌小芽oO 2024-08-20 09:41:58

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

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

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

NSString is an immutable representation (or a readonly view at worst). So you would need to either cast to a NSMutableString if you know it's mutable or make a mutable copy:

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

I autoreleased it because mutableCopy returns a newly initialized copy with a retain count of 1.

嗳卜坏 2024-08-20 09:41:58
NSString *someImmutableString = @"something";
NSMutableString *mutableString = [someImmutableString mutableCopy];

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

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

Important! mutableCopy returns an object that you own, so you must either release or autorelease it.

清音悠歌 2024-08-20 09:41:58

你可以将 NSMutableString 设置为 NSString,但反过来也

NSString *str =  [NSMutableString alloc]init];

可以,但

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

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

NSMutableString *mStr = [str mutableCopy];

You can set an NSMutableString to an NSString, but not the other way around

NSString *str =  [NSMutableString alloc]init];

is okay, but

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

is not. This is because an NSMutableString is a subclass of NSString, so it 'is a' NSString.
You can however create a mutable string from an NSString with

NSMutableString *mStr = [str mutableCopy];
唯憾梦倾城 2024-08-20 09:41:58

Swift 2.0

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

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

Swift 2.0

For Swift users, the following works in Xcode 7.

var str : String = "Regular string"
var mutableStr : NSMutableString = NSMutableString(string: str)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文