gpt4 book ai didi

ios - CFStringRef 到 NSString ARC 泄漏。为什么?

转载 作者:行者123 更新时间:2023-12-01 17:19:27 26 4
gpt4 key购买 nike

我一直在寻找从 CFStringRef 出发的正确方法至NSString在 ARC 中避免内存泄漏,一些主要投票的答案建议:

NSString * string = (__bridge NSString *)cfString;

我在这里使用这种方法,但是在分析应用程序时,我仍然在这个小方法中遇到内存泄漏[见附图]。

所以,我不知道如何解决这个问题。有人有解决这个问题的方法吗?

谢谢

enter image description here

enter image description here

因此,显然添加了 CFRelease(ext)在返回修复泄漏之前。问题是我不认为我完全理解原因。我以为这条线:
NSString * extension = (__bridge NSString*)ext

将拥有 Core Foundation ext 字符串的所有权并处理发布。
谁能准确解释这里发生了什么?

最佳答案

根据事实上的“标准” Cocoa 命名约定,包含 Create 的函数或 Copy以他们的名义返回一个引用计数为 1 的对象。您必须将此引用计数转移到 ARC-land 以便 ARC 可以处理它。您使用 __bridge_transfer为此目的的关键字。

NSString *string = (__bridge_transfer NSString *)cfString;

关于ios - CFStringRef 到 NSString ARC 泄漏。为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17967515/

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