ios中的URL编码字符串失败

时间:2012-01-10 16:01:36

标签: ios5 automatic-ref-counting urlencode cfstring

我正在尝试使用ARC在我的iOS 5应用中对字符串进行url编码。

我就是这样做的:

- (NSString *)escape:(NSString *)text
{
    return (__bridge NSString *)CFURLCreateStringByAddingPercentEscapes(NULL,
                                          (__bridge CFStringRef)text, NULL,
                                          (CFStringRef)@"!*'();:@&=+$,/?%#[]",
                                          kCFStringEncodingUTF8);
}

然后我用这样的测试数据调用它:

NSLog([self escape:@"kalel///&&&???"]);

但我从NSLog获得的输出是:

kalel0.0000000.0000000.00000022623F0.0000000.000000

这似乎不对,但无论我怎么做都不对

1 个答案:

答案 0 :(得分:2)

您的escape功能正常。问题在于您调用NSLog

escape为您的输入生成字符串kalel%2F%2F%2F%26%26%26%3F%3F%3FNSLog将此字符串解释为格式字符串,并在kalel字后立即将一些垃圾作为浮点数打印!

您应该始终使用字符串常量作为第一个参数调用NSLog,例如:

NSLog(@"%@", [self escape:@"kalel///&&&???"]);

P.S。 escape中有内存泄漏---当您将保留的CF对象转移到Objective C空间时,您应该return (__bridge_transfer NSString *)