2013-03-04 6 views
5

में कनवर्ट करने पर एनएसएमकेक कोलेक्टेबल के साथ समस्या मैं अपने कोड को एआरसी में बदलने की कोशिश कर रहा हूं और मुझे एएसआईआरएक्वेस्ट लाइब्रेरी में एनएसएमकेकलेलेबल के साथ समस्या है।एआरसी

- (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 नहीं रह गया है एआरसी में आवश्यक है। आप यहां 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 @""; 
}