首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >+[NSString stringWithString:] --有什么意义?

+[NSString stringWithString:] --有什么意义?
EN

Stack Overflow用户
提问于 2009-10-24 07:00:54
回答 7查看 16.8K关注 0票数 19

由于NSString字符串是不可变的,那么stringWithString:类方法的值是什么?

当与NSMutableString一起使用时,我得到了该实用程序,只是我没有看到与NSString类一起使用的实用程序。

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2009-10-24 07:25:44

您可能有一个想要复制的NSMutableString (或一些自己开发的NSString子类)。

代码语言:javascript
复制
NSMutableString *buffer = [NSMutableString string];
// do something with buffer
NSString *immutableStringToKeepAround = [NSString stringWithString:buffer];

当然,您也可以只复制一份:

代码语言:javascript
复制
NSMutableString *buffer = [NSMutableString string];
// do something with buffer
NSString *immutableStringToKeepAround = [[buffer copy] autorelease];

但您拥有该副本,并且必须释放或自动释放它。

票数 21
EN

Stack Overflow用户

发布于 2009-10-24 07:07:59

正如"Andy“在#318666中指出的,它与内存管理有关,引用:

initWithString和stringWithString的不同之处在于stringWithString返回一个自动释放的指针。这意味着你不需要专门释放它,因为下次自动释放池清理任何自动释放的指针时,它将被处理。

另一方面,initWithString返回一个保留计数为1的指针-您确实需要在该指针上调用release,否则将导致内存泄漏。

(摘自here)

票数 9
EN

Stack Overflow用户

发布于 2009-10-24 07:08:52

返回通过从另一个给定字符串中复制字符而创建的字符串

代码语言:javascript
复制
[NSString stringWithString:@"some string"]

它等同于

代码语言:javascript
复制
[[[NSString alloc] initWithString:@"some string"] autorelease]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1616348

复制
相关文章

相似问题

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