2010-08-22 3 views
1

related thread에서 아래의 "mailString"이 이미 자동 출시 된 것을 어떻게 알았습니까?왜이 mailString autorelease가 중복 되었습니까?

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

답변

5

stringWithFormat:은 자동 렌더링 된 개체를 반환하는 편리한 함수입니다.

난 충분히 Memory Management Guide을 recomment 수 없습니다. 그것 정말 아마도 두 번 이상 읽을 가치가있다.

2

mailString이 [[NSString alloc] init]에 의해 생성되지 않았기 때문에; 관용구 그것은 풀어 놓일 필요가있다.

0

아니요,은 해당 객체가 자동으로 릴리즈되었음을 알고 있습니다.

당신이 아는 한 그것은 이 아니며, 그것을 해제하는 귀하의 책임은입니다.

이름이 'alloc', 'new'로 시작하지 않았거나 'copy'가 포함되지 않은 메서드에서 반환되었으므로 'retain'을 호출 한 적이 없습니다.

Eiko가 말한 것을 반복하여 - 사과 관리 안내서를 읽으십시오 -이 주제에서는 매우 분명합니다.

관련 문제