1
ARC에서 __bridge는 소유권 이전이없는 캐스트만을 의미합니다. 그러나 다음 코드는 충돌하지 않습니다CFStringRef는 __bridge (ARC)와의 강력한 참조가없는 NSString을 보유하고있는 것처럼 보입니다.
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));
내가 str에하는 전무를 할당 할 때, 문자열은 이상적으로 해제되어야하고 printf와 라인이 중단되어야합니다.
"충돌해야합니다."- 음, ** 충돌이 필요 없습니다. 인스턴스가 할당 해제 된 경우에도 작동 할 수 있습니다. –
메모리가 아직 재사용되지 않았습니다. malloc 낙서 또는 경비원을 켜면 충돌이 발생합니다. –
유사 : [내 개체가 무수히 많은 작업 후에도 계속 작동하는 이유는 무엇입니까?] (http://stackoverflow.com/questions/6646947/why-my-object-still-work-after-countless-of-release/6647237#6647237) , [할당 취소 된 개체로 메시지 보내기가 작동 중입니다!] (http://stackoverflow.com/questions/1575819/objective-c-send-message-to-deallocated-object-is-working-why?rq=1) –