ARC下檢視物件的引用計數

2021-07-03 12:51:30 字數 496 閱讀 1054

網上各種文章、問答給出的結論都是「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後,...