Mic*_*owe 40 casting objective-c automatic-ref-counting
将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 "
Run Code Online (Sandbox Code Playgroud)
代码如下:
- (NSString *)_encodeString:(NSString *)string
{
NSString *result = (NSString *)CFURLCreateStringByAddingPercentEscapes(NULL,
(CFStringRef)string, // this is line in error
NULL,
(CFStringRef)@";/?:@&=$+{}<>,",
kCFStringEncodingUTF8);
return [result autorelease];
}
Run Code Online (Sandbox Code Playgroud)
什么是桥接演员?
我知道这是一个旧线程,我在需要使用时遇到了这个问题
- (NSString *)URLEncodedString
{
NSString *result = (NSString *)CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault,
(CFStringRef)self,
NULL, CFSTR("!*'();:@&=+$,/?%#[]"),
kCFStringEncodingUTF8);
[result autorelease];
return result;
}
Run Code Online (Sandbox Code Playgroud)
所以我所做的是转到“目标”>“构建阶段”>“编译源”。列出了您的文件,双击该文件并在文件旁边添加以下行。
-fno-objc-arc
Run Code Online (Sandbox Code Playgroud)