[NSMutableString string]与[[NSMutableString string] autorelease]是否相同?

问题描述:

我注意到了一段代码,它在某处 NSMutableString * myString = [[NSMutableString string] autorelease];[NSMutableString string]与[[NSMutableString string] autorelease]是否相同?

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

+1

[您不得放弃您不属于自己的对象的所有权](http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/MemoryMgmt/Articles/mmRules.html) – albertamg

NSMutableString *myString = [[NSMutableString string] autorelease]; 

如果他们没有在其他地方调用retain,将会导致崩溃。

[NSMutableString string] 

相同

[[[NSMutableString alloc] init] autorelease] 

不看我的权利。你确定你看到的例子实际上是在做这个吗?

[NSMutableString string]相当于

[[[NSMutableString alloc] init] autorelease] 

因此,与您所提供的例子,你会得到

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

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