When converting an Objective-C program to a Objective-C ARC, I get the error:
"cast of Objective-C pointer type 'NSString *' to C pointer type 'CFStringRef' (aka 'const struct __CFString *') requires a bridged cast "
The code is as follows:
-(NSString*)_encodeString:(NSString*)string
{NSString*result =(NSString*)CFURLCreateStringByAddingPercentEscapes(NULL,(CFStringRef)string,// this is line in error
NULL,(CFStringRef)@";/?:@&=$+{}<>,",
kCFStringEncodingUTF8);return[result autorelease];}
Have a look at the ARC documentation on the LLVM website. You'll have to use __bridge or one of the other keywords.
This is because Core Foundation objects (CF*Refs) are not controlled by ARC, only Obj-C objects are. So when you convert between them, you have to tell ARC about the object's ownership so it can properly clean them up. The simplest case is a __bridge cast, for which ARC will not do any extra work (it assumes you handle the object's memory yourself).
So what I did is go to Target > Build phase > Compile sources. There is your file listed, double click on that and add following lines next to your file.
cast of Objective-C pointer type 'NSString *' to C pointer type 'CFStringRef' (aka 'const struct __C
第一步:第二步:http://stackoverflow.com/questions/6725558/cast-of-objective-c-pointer-type-nsstring-to-c-pointer-type-cfstringref-aWhen converting an Objective-C progr