[NSMutableString string]与[[NSMutableString string] autorelease]是否相同?
问题描述:
我注意到了一段代码,它在某处 NSMutableString * myString = [[NSMutableString string] autorelease];[NSMutableString string]与[[NSMutableString string] autorelease]是否相同?
这是矫枉过正?它不应该和[NSMutableString string]一样吗?
答
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
错误。
[您不得放弃您不属于自己的对象的所有权](http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/MemoryMgmt/Articles/mmRules.html) – albertamg