首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NSString复制不复制?

NSString复制不复制?
EN

Stack Overflow用户
提问于 2010-03-26 14:30:47
回答 4查看 11K关注 0票数 10
代码语言:javascript
复制
  NSString *myString = @"sample string";
  NSString *newString = [myString copy];

如果我在这两行之后设置断点,则myString的指针与newString的指针相同。

见鬼?NSString copy不是应该返回一个指向新对象的指针吗?或者我是否遗漏了一些关于复制工作原理的基本信息?

EN

回答 4

Stack Overflow用户

发布于 2010-03-26 14:41:55

因为NSString,而不是可变的,所以它可能只是在内部增加ref count并使用它。

当您对其中一个NSStrings执行release操作时,它可能会减少ref count标准的内存管理。

你觉得这有什么问题吗?

票数 10
EN

Stack Overflow用户

发布于 2011-04-12 00:15:47

想想看:NSMutableStringNSString的子类。当您的属性被声明为NSString时,您不会期望它会发生变化。

考虑一下,如果你使用了retain,有人给了你一个NSMutableString,然后又改变了它,那么你的类就会崩溃。

然而,您可能会认为always copying很慢。所以NSStringcopy只是简单地调用retainNSMutableStringcopy实际复制了一份。

通常,给spit out一个NSString *会更好,因为人们不需要一直复制它。

票数 8
EN

Stack Overflow用户

发布于 2014-12-13 05:25:18

您可以像示例中那样分配新的变量

代码语言:javascript
复制
NSString *anotherString = [[NSString alloc] initWithString:originalString];
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2521468

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档