我的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;
}
我不确定这里的内存管理?结果上的自动释放是否足够,或者我是否完全咆哮错误的树?
答案 0 :(得分:3)
Yes it is。你甚至可以稍微缩短你的方法:
- (NSString *)urlEncodedMessage:(NSString *)message {
CFStringRef urlString = CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault, (CFStringRef) message, NULL, (CFStringRef) @"&+", kCFStringEncodingUTF8);
return [(NSString *)urlString autorelease];
}