从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];
}
答案 0 :(得分:5)
stringWithFormat:
是一个便捷函数,它返回一个自动释放的对象。
我不能高度推荐Memory Management Guide。 真的值得阅读,可能不止一次。
答案 1 :(得分:2)
因为[[NSString alloc] init]不创建mailString;它确实需要被释放。
答案 2 :(得分:0)
你不知道该对象已被自动释放。
你所知道的是,发布它是 你的责任。
你知道,因为它是从一个名称不以'alloc','new'开头或包含'copy'的方法返回给你的,而你从来没有对它进行'retain'调用。
重申Eiko所说的内容 - 阅读苹果内存管理指南 - 这个主题非常明确。