gpt4 book ai didi

ios - __bridge_transfer 在 NULL 对象上是否有效

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

假设一个方法通过指针返回一个CFErrorRef。此返回的错误可能是 NULL。那么,仍然执行 __bridge_transfer 是否安全,或者我是否应该检查 NULL

例如

CFErrorRef cfError;
ABAddressBookRef addressBookRef = ABAddressBookCreateWithOptions(NULL, &cfError);

NSError *error = (__bridge_transfer NSError *)cfError;

我在文档中没有看到任何提及此内容,CFRelease 文档明确指出 This value must not be NULL. https://developer.apple.com/library/mac/documentation/CoreFoundation/Reference/CFTypeRef/Reference/reference.html#//apple_ref/c/func/CFRelease

最佳答案

您不需要检查 NULL。

ARC 是一种严格的编译时机制。当您使用 __bridge_transfer 时,您只是将变量的内存管理责任转移给了编译器。 cfError 在运行时是否恰好为 NULL 与编译器完全无关。

在您的情况下,ARC 将为 error 插入一个版本,但如果 error 恰好为 nil,则这是一个简单的空操作。

关于ios - __bridge_transfer 在 NULL 对象上是否有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24708285/

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