为什么我在CFURLCreateStringByAddingPercentEscapes中有可能泄漏?

Vol*_*da2 1 iphone memory-leaks

我的代码是:

NSString *buffer = (NSString *)CFURLCreateStringByAddingPercentEscapes(NULL, (CFStringRef)name, NULL, (CFStringRef)@"!*'();:@&=+$,/?%#[]", kCFStringEncodingUTF8);

NSString *totalString = [NSString stringWithFormat:@"buffer/%@", buffer];
Run Code Online (Sandbox Code Playgroud)

我运行了"构建和分析工具"并看到:"在第979行分配并存储到'缓冲区'中的对象在此点之后不再被引用,并且保留计数为+1(对象泄漏)".

为什么我可能有泄漏CFURLCreateStringByAddingPercentEscapes

Pet*_*ter 5

在ARC下,您应该使用__bridge_transfer传输返回值的内存管理:

    NSString *buffer = (__bridge_transfer NSString *)CFURLCreateStringByAddingPercentEscapes(NULL, (CFStringRef)name, NULL, (CFStringRef)@"!*'();:@&=+$,/?%#[]", kCFStringEncodingUTF8);
Run Code Online (Sandbox Code Playgroud)