为什么这个mailString自动释放是多余的?

时间:2010-08-22 16:46:33

标签: iphone objective-c memory-management

related thread开始,我怎么知道下面的“mailString”已经自动释放?

//
+ (void) sendEmail:(NSString *) subject withBody:(NSString *)body {
 NSString *mailString = [NSString stringWithFormat:@"mailto:?@&subject=%@&body=%@",
       [subject stringByAddingPercentEscapesUsingEncoding:NSASCIIStringEncoding],
       [body  stringByAddingPercentEscapesUsingEncoding:NSASCIIStringEncoding]];
 [[UIApplication sharedApplication] openURL:[NSURL URLWithString:mailString]];
 [mailString autorelease];
 }

3 个答案:

答案 0 :(得分:5)

stringWithFormat:是一个便捷函数,它返回一个自动释放的对象。

我不能高度推荐Memory Management Guide真的值得阅读,可能不止一次。

答案 1 :(得分:2)

因为[[NSString alloc] init]不创建mailString;它确实需要被释放。

答案 2 :(得分:0)

知道该对象已被自动释放。

你所知道的是,发布它是 你的责任。

你知道,因为它是从一个名称不以'alloc','new'开头或包含'copy'的方法返回给你的,而你从来没有对它进行'retain'调用。

重申Eiko所说的内容 - 阅读苹果内存管理指南 - 这个主题非常明确。