網上各種文章、問答給出的結論都是「arc下無法列印物件的引用計數值」。
確實,arc禁止直接檢視objective-c物件的引用計數,但是objective-c物件不是還可以轉化為core foundation物件麼?於是動手做了乙個小實驗:
id obj = [[nsobject alloc]init];
printf("retain count = %ld\n",cfgetretaincount((__bridge cftyperef)(obj)));
需要注意的是,這裡要用__bridge來轉換,如果用__bridge_retained來轉換的話,實際上,生成了乙個core foundation物件,並且retain了一次原來的objective-c物件,造成引用計數比真實值大一。
執行結果
retain count = 1工程開啟了arc模式,也正確輸出了oc物件的引用計數值。
ARC下檢視物件的引用計數
網上各種文章 問答給出的結論都是 arc下無法列印物件的引用計數值 確實,arc禁止直接檢視objective c物件的引用計數,但是objective c物件不是還可以轉化為core foundation物件麼?於是動手做了乙個小實驗 id obj nsobject alloc init prin...
ARC(自動引用計數)
arc arc是automatic reference counting 自動引用計數 的縮寫,是ios5一同推出的新特性,但是ios4.3也支援arc,只是不能使用weak。使用arc,不需要再retain release autorelease,因為編譯器會在合適的地方自動的插入retain r...
ARC自動引用計數
選擇專案的屬性檔案 搜尋 automatic reference objective c automatic reference counting yes arc 並不是gc在執行中判斷引用計數是否為0,從而清除記憶體。而是在 編譯之前通過靜態分析工具analyze自動生成記憶體管理 開啟arc後,...