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

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

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

【问题讨论】:

标签: objective-c nsstring autorelease


【解决方案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 错误。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多