gpt4 book ai didi

ios - NSString* 到 CFStringRef 导致无用的字符数组

转载 作者:行者123 更新时间:2023-11-29 00:45:25 35 4
gpt4 key购买 nike

我有以下代码片段:

-(CFStringRef)setupFileName:(NSString*)_name :(NSString*)_extension
{
NSString* tmpName = [_name stringByAppendingString:_extension];
CFStringRef ref = (__bridge CFStringRef)tmpName;
return ref;
}

当我在 return 语句处中断时, ref 包含正确的数据,一个带扩展名的漂亮字符串。但是当我这样使用它时:

CFStringRef tickWav = [self setupFileName:_name :kTick];

这会产生无用的字符链。当我从函数返回正确的值时,是否有东西破坏了我的编码?我能做什么?

最佳答案

没有自动 CFTypeRef 内存管理。如果你要返回一个 NSString,它将被自动释放。对于 CFStringRef 则不然。所以你必须自己做这项工作。

您需要使用 CFRetain 保留 CFStringRef 并执行 __bridge_retained 转换,而不是 __bridge 转换。您正在跨越从对象世界到 CFTypeRef 世界的桥梁;您必须在该字符串穿过桥时提供内存管理。然后,您需要稍后在接收代码中手动释放 CFStringRef,否则将会泄漏。

关于ios - NSString* 到 CFStringRef 导致无用的字符数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38662490/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com