1

在 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 行应该崩溃。

4

1 回答 1

1

引用 Josh 的评论:“内存还没有被重用。如果你打开 malloc scribble 或 guard,你会崩溃。”

于 2013-01-09T05:50:46.997 回答