[NSMutableString string] 和 [[NSMutableString string] autorelease] 一样吗?

Posted

技术标签:

【中文标题】[NSMutableString string] 和 [[NSMutableString string] autorelease] 一样吗?【英文标题】:Is [NSMutableString string] same as [[NSMutableString string] autorelease]? 【发布时间】:2011-12-09 17:21:15 【问题描述】:

我注意到某处有一段代码 NSMutableString *myString = [[NSMutableString string] autorelease];

是不是有点矫枉过正?不应该和[NSMutableString string]一样吗?

【问题讨论】:

You must not relinquish ownership of an object you do not own 【参考方案1】:
NSMutableString *myString = [[NSMutableString string] autorelease];

如果他们不在其他地方调用保留,将导致崩溃。

[NSMutableString string]

一样
[[[NSMutableString alloc] init] autorelease]

【讨论】:

【参考方案2】:

我觉得不合适。你确定你看到的例子确实是这样做的吗?

[NSMutableString string] 等价于

[[[NSMutableString alloc] init] autorelease]

所以你提供的例子,你会得到

[[[[NSMutableString alloc] init] autorelease] autorelease]

这将导致过度释放和exc_bad_access 错误。

【讨论】:

以上是关于[NSMutableString string] 和 [[NSMutableString string] autorelease] 一样吗?的主要内容,如果未能解决你的问题,请参考以下文章

不可变字符串 NSString与可变字符串 NSMutableString

ios的NSMutableString用法

如何用 NSMutableString 附加 NSMutableString?

NSString 和 NSMutableString

iOS基础-NSString及NSMutableString剖析

OC NSMutableString的使用