gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 04:03:33 26 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];
}

什么是桥接 Actor ?

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/10484906/

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