2014-01-23 2 views
0

나는 특정 파일에 대한 MIME 형식을 추측하기 위해 노력하고있어, 나는이 코드를 가지고 :이 함수에서 메모리 누수를 피할 수있는 방법은 무엇입니까?

- (NSString *)fileMIMEType:(NSString *)file { 
    CFStringRef UTI = UTTypeCreatePreferredIdentifierForTag(kUTTagClassFilenameExtension, (__bridge CFStringRef)[file pathExtension], NULL); 
    CFStringRef MIMEType = UTTypeCopyPreferredTagWithClass(UTI, kUTTagClassMIMEType); 
    CFRelease(UTI); 
    return (__bridge NSString *)MIMEType; 
} 

(5) 'MIME 타입'에 저장된 객체의 잠재적 인 누출이 있다고 불평 엑스 코드를 분석 중에 있습니다.

누출을 방지하기 위해이 유틸리티 방법을 어떻게 다시 쓸 수 있습니까? 필요할 때 그것을 해제 할 수 있도록

답변

1

당신은 ARC가 관리하지 않는 CFStringRef을 작성, 당신은 전송에 ARC에 해당 참조의 소유권을해야합니다. __bridge_transfer을 사용하려면 __bridge을 사용하면 소유권이 이전되지 않으므로 누출이 발생합니다.

+0

오늘 '__bridge_transfer'에 대해 알게되었습니다. 많은 감사합니다! –

관련 문제