我正在尝试使用ARC在iOS 5应用中编码一个字符串。

这就是我的方式:

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

那似乎不是正确的,但是无论我无法正确正确

有帮助吗?

解决方案

您的 escape 功能很好。问题在于您打电话的方式 NSLog:

escape 产生字符串 kalel%2F%2F%2F%26%26%26%3F%3F%3F 为您的输入。 NSLog 将此字符串解释为格式字符串,并将某些垃圾打印为浮点数 kalel 单词!

你应该始终打电话 NSLog 以字符串常数为第一个参数,例如:

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

PS 您有内存泄漏 escape - - 你应该 return (__bridge_transfer NSString *) 当您将保留的CF对象转移到目标C空间时。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top