gpt4 book ai didi

ios - 如果我将自动释放的对象桥接到 Core Foundation,我必须使用 __bridge 或 __bridge_retained 吗?

转载 作者:可可西里 更新时间:2023-11-01 03:28:35 24 4
gpt4 key购买 nike

ARC 迁移工具遇到了这个问题:

NSURL *fileURL = [NSURL fileURLWithPath:path];
AudioFileOpenURL((CFURLRef)fileURL, kAudioFileReadPermission, 0, &fileID);

特别是,它不确定是否应该执行 __bridge 或 __bridge_retained。我也是。

-fileURLWithPath 返回一个自动释放的对象,在这个地方我不是 fileURL 的所有者。但与此同时,该对象的保留计数至少为 +1。

我敢打赌这只能用 __bridge 来完成。

最佳答案

您只想为此使用常规的 __bridge 转换。只有当您想要管理一个转换 CF 对象的生命周期时,您才会使用 __bridge_retained。例如:

CFStringRef cf_string = (__bridge_retained CFStringRef)someNSString;
// some long time later, perhaps in another method etc
CFRelease(cf_string);

所以 __bridge_retained 实际上是在告诉编译器您有一个 ARC 对象,现在您想基本上将其转换为您要直接管理的 CF 对象。

关于ios - 如果我将自动释放的对象桥接到 Core Foundation,我必须使用 __bridge 或 __bridge_retained 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8842953/

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