CFStringRef似乎坚持使用NSString,只有__bridge(ARC)没有强引用

时间:2013-01-08 17:52:58

标签: objective-c automatic-ref-counting core-foundation

在ARC中,__ bridge应该暗示只是一个没有所有权转移的演员。但是以下代码段不会崩溃:

    int i = 8;
    NSString* str = [[NSString alloc] initWithFormat:@"abc%d",i];
    Employee* e = [Employee newEmployee];
    CFStringRef cfStr = (__bridge CFStringRef)(str);
    str = nil;
    printf("%s\n",CFStringGetCStringPtr(cfStr, kCFStringEncodingMacRoman));

当我将nil分配给str时,理想情况下应该取消分配字符串并且printf行应该崩溃。

1 个答案:

答案 0 :(得分:1)

引用乔希的评论: “记忆还没有被重用。如果你打开malloc涂鸦或警卫,你就会崩溃。”