2013-03-04 15 views
5

Próbuję przekonwertować mój kod na ARC i mam problem z NSMakeCollectable w bibliotece ASIRequest.Problem z NSMakeCollectable podczas konwersji do ARC

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

Daje mi ten błąd: NSMakeCollectable is unavailable: not available in automatic reference counting.

Jak rozwiązać ten problem? Potrzebujesz wskazówek. Dzięki.

EDIT: Tried to i nie działa:

- (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 @""; 
    } 

Tried to także:

- (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

check to http://stackoverflow.com/questions/8594721/nsmakecollectable-and-arc-doesnt-work – tkanzakic

+0

próbował go .. nie działa ... – lakesh

+0

nie działa ... i edytować moje pytanie. – lakesh

Odpowiedz

13

NSMakeCollectable nie jest już wymagane w ARC. Możesz użyć tutaj 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 @""; 
} 
Powiązane problemy