1
在弧,__bridge應該暗示只是一個沒有所有權轉讓的演員。但是,下面的代碼不會崩潰:CFStringRef似乎堅持NSString沒有強大的參考只是__bridge(ARC)
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的行應該崩潰。
「應該崩潰」 - 好吧,它不需要**崩潰。即使實例被釋放,它也可能工作。 – 2013-01-08 17:55:07
內存還沒有被重用。如果你打開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) –