Assume this code is compiled under ARC:
BOOL method(unsigned a)
{
NSString *string = [[NSString alloc] initWithCString:"hi"];
if (a & 1 == 1)
{
CFStringRef CF = (CFStringRef)CFBridgingRetain(string);
printf("%s", CFStringGetCStringPtr(CF, kCFStringEncodingUTF8));
CFRelease(CF);
}
}
Will string get over-released in this example? What if I did the reverse?
BOOL method(unsigned a)
{
CFStringRef string = CFStringCreateWithCString(NULL, "Hello World!", kCFStringEncodingUTF8);
if (a & 1 == 1)
{
NSString *ns = (NSString *)CFBridgingRelease(string);
printf("%s", CFStringGetCStringPtr(CF, kCFStringEncodingUTF8);
}
if (string)
CFRelease(string);
}