2012-01-10 6 views
1

ARC를 사용하여 iOS 5 앱에서 문자열을 인코딩하려고합니다.ios에 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 

그게 옳은 것 같지 않지만, 내가 제대로 못 하겠어.

답변

2

escape 기능이 정상입니다. 문제는 전화하는 방식입니다. NSLog :

escape은 입력 용으로 kalel%2F%2F%2F%26%26%26%3F%3F%3F 문자열을 생성합니다. NSLog은이 문자열을 형식 문자열로 해석하고 kalel 단어 바로 뒤에 부동 소수점 숫자로 일부 가비지를 인쇄합니다!

당신은 항상 첫 번째 인수로 문자열 상수, 예컨대 :

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

P.S.와 NSLog를 호출해야escape에 메모리 누수가 있습니다. 유지 된 CF 객체를 Objective C 공간으로 전송할 때 return (__bridge_transfer NSString *)을 입력해야합니다.

+0

환상적입니다. 감사합니다. –