免费桥接和内存管理

时间:2009-02-24 13:14:34

标签: iphone objective-c cocoa-touch memory-management

我的iPhone应用程序需要为表单参数执行一些URL转义序列编码。 NSString stringByAddingPercentEscapesUsingEncoding as stringByAddingPercentEscapesUsingEncoding不会逃脱太多。这就是我所拥有的

-(NSString*)currentMessageUrlEncoded{
  CFStringRef originalURLString = (CFStringRef) self.currentMessage;
  CFStringRef urlString = CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault, originalURLString, NULL, (CFStringRef) @"&+", kCFStringEncodingUTF8);  
  NSString *result =  (NSString*) urlString;
  [result autorelease]; // Is this sufficient?
  return result;
}

我不确定这里的内存管理?结果上的自动释放是否足够,或者我是否完全咆哮错误的树?

1 个答案:

答案 0 :(得分:3)

Yes it is。你甚至可以稍微缩短你的方法:

- (NSString *)urlEncodedMessage:(NSString *)message {
    CFStringRef urlString = CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault, (CFStringRef) message, NULL, (CFStringRef) @"&+", kCFStringEncodingUTF8);  
    return [(NSString *)urlString autorelease];
}