[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
如何用 NSMutableString 附加 NSMutableString?