对象发送-autorelease太多次(iOS5)

时间:2011-07-20 00:47:59

标签: ios ternary-operator autorelease

我使用最新的XCode测试版(4.2 Build 4C114,iOS 5.0)和我无法解决的自动释放问题。代码需要有条件地设置一个字符串,该字符串将成为警报中的消息:

NSString* msg = ([result rangeOfString:@"Ok"].location == NSNotFound) ?
  @"Upload failed" : @"Uploaded ok";

NSString* msg = ([result rangeOfString:@"Ok"].location == NSNotFound) ? @"Upload failed" : @"Uploaded ok";

Running Analyze突出显示“对象已发送 - 自动释放太多次(2)”的行。 而且,运行应用程序(在模拟器下)会导致SIGABRT双重释放。

我尝试将该行编码为if / else。
我已经尝试为这两个消息创建单独的字符串,只是使用三元组和if / else分配适当的指针指向第三个指针。 我没有做任何事让它消失!

1 个答案:

答案 0 :(得分:1)

使用@“string contents”创建一个字符串将始终自动释放。您不需要自己专门发布它。

在大多数情况下,如果你开始使用“alloc”或“new”,你只需要释放一个对象。