gpt4 book ai didi

objective-c - 将 Objective-C 指针类型 'NSString *' 转换为 C 指针类型 'CFStringRef' (又名 'const struct __CFString *' )需要桥接转换

转载 作者:IT老高 更新时间:2023-10-28 11:43:58 27 4
gpt4 key购买 nike

将 Objective-C 程序转换为 Objective-C ARC 时,出现错误:

"cast of Objective-C pointer type 'NSString *' to C pointer type 'CFStringRef' (aka 'const struct __CFString *') requires a bridged cast "

代码如下:

- (NSString *)_encodeString:(NSString *)string
{
NSString *result = (NSString *)CFURLCreateStringByAddingPercentEscapes(NULL,
(CFStringRef)string, // this is line in error
NULL,
(CFStringRef)@";/?:@&=$+{}<>,",
kCFStringEncodingUTF8);
return [result autorelease];
}

什么是桥接类型转换?

Screenshot for error

最佳答案

看看ARC documentation在 LLVM 网站上。您必须使用 __bridge 或其他关键字之一。

这是因为 Core Foundation 对象 (CF*Refs) 不受 ARC 控制,只有 Obj-C 对象受控制。所以当你在它们之间进行转换时,你必须告诉 ARC 对象的所有权,以便它可以正确地清理它们。最简单的情况是 __bridge 强制转换,ARC 不会为此做任何额外的工作(它假设您自己处理对象的内存)。

关于objective-c - 将 Objective-C 指针类型 'NSString *' 转换为 C 指针类型 'CFStringRef' (又名 'const struct __CFString *' )需要桥接转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6725558/

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