在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行应该崩溃。
答案 0 :(得分:1)
引用乔希的评论: “记忆还没有被重用。如果你打开malloc涂鸦或警卫,你就会崩溃。”