2013-03-04 4 views
5

내 코드를 ARC로 변환하려고하는데 ASIRequest 라이브러리의 NSMakeCollectable에 문제가 있습니다.ARC로 변환 할 때 NSMakeCollectable 관련 문제

- (NSString*)encodeURL:(NSString *)string 
{ 
    NSString *newString = NSMakeCollectable([(NSString *)CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault, (CFStringRef)string, NULL, CFSTR(":/?#[]@!$ &'()*+,;=\"<>%{}|\\^~`"), CFStringConvertNSStringEncodingToEncoding([self stringEncoding])) autorelease]); 
    if (newString) { 
     return newString; 
    } 
    return @""; 
} 

이 오류는 NSMakeCollectable is unavailable: not available in automatic reference counting입니다.

어떻게 해결할 수 있습니까? 지침이 필요합니다. 감사.

편집 : 이 시도하고 작동하지 :

- (NSString*)encodeURL:(NSString *)string 
    { 
     NSString *newString = NSMakeCollectable([(NSString *)CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault, (CFStringRef)string, NULL, CFSTR(":/?#[]@!$ &'()*+,;=\"<>%{}|\\^~`"), CFStringConvertNSStringEncodingToEncoding([self stringEncoding])) autorelease]); 
     if (newString) { 
      return (__bridge_transfer NSString*)newString; 
     } 
     return @""; 
    } 

뿐만 아니라이 시도하지 :

- (NSString*)encodeURL:(NSString *)string 
     { 
      NSString *newString = NSMakeCollectable([(__bridge_transfer NSString*)CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault, (CFStringRef)string, NULL, CFSTR(":/?#[]@!$ &'()*+,;=\"<>%{}|\\^~`"), CFStringConvertNSStringEncodingToEncoding([self stringEncoding])) autorelease]); 
      if (newString) { 
       return newString; 
      } 
      return @""; 
     } 
+0

확인이 http://stackoverflow.com/questions/8594721/nsmakecollectable-and-arc-doesnt-work – tkanzakic

+0

내가 내 질문에 편집 ... – lakesh

+0

가 작동하지 ... 작동하지 .. 그것을 시도. . – lakesh

답변

13

NSMakeCollectable는 더 이상 ARC 필요합니다. 여기서 CFBridgingRelease을 사용할 수 있습니다.

- (NSString*)encodeURL:(NSString *)string 
{ 
    NSString *newString = CFBridgingRelease(CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault, (CFStringRef)string, NULL, CFSTR(":/?#[]@!$ &'()*+,;=\"<>%{}|\\^~`"), CFStringConvertNSStringEncodingToEncoding([self stringEncoding]))); 
    // or NSString *newString = (__bridge_transfer NSString*)(CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault, (CFStringRef)string, NULL, CFSTR(":/?#[]@!$ &'()*+,;=\"<>%{}|\\^~`"), CFStringConvertNSStringEncodingToEncoding([self stringEncoding])); 
    if (newString) { 
     return newString; 
    } 
    return @""; 
} 
관련 문제