gpt4 book ai didi

ios - 如何将 NSURL 对象复制到 CFURL 结构数组

转载 作者:行者123 更新时间:2023-11-29 04:15:36 25 4
gpt4 key购买 nike

我有一个 ivar,它是 CFURLRef 结构的“普通”C 数组。我称之为 sourceURLArray。我将其初始化为容纳六个元素。

后来,在一个函数中,我创建(alloc/init)一个 NSURL* 对象。我将其称为 fileURL,我想将该对象的副本保存到上述数组的第一个元素中。我以为我需要做的就是这样:

        sourceURLArray[0] = (__bridge CFURLRef)([fileURL copy]);

但是,当我执行代码时,我第二次通过该函数收到发送到已释放实例的消息消息。检查变量后,上面的行执行后,sourceURLArray[0] 保存与 fileURL 相同的地址。由于当函数完成时,fileURL 超出范围,sourceURLArray[0] 中的地址被释放。

看来我误解了有关复制、免费桥接的细微差别或两者的一些基本知识。

最佳答案

尝试:

sourceURLArray[0] = (__bridge_retained CFURLRef)([fileURL copy]);

或:

sourceURLArray[0] = (CFURLRef)CFBridgingRetain([fileURL copy]);

这告诉 ARC 您正在将所有权转移到另一个阵列。您现在必须在某个时刻正确调用 CFURLRef 上的 CFRelease。

关于ios - 如何将 NSURL 对象复制到 CFURL 结构数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13770040/

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