2013-10-17 67 views

回答

1

首先,在-retainCount方法返回一個無符號整數,所以,顧名思義,不能是負面的。您打印的格式錯誤,因爲您錯誤地認爲它是有符號的整數。它實際上是NSUIntegerMax

其次,-retainCount通常沒有用。即使the documentation說:

不要使用這種方法。 (必填)

...

這種方法在調試內存管理問題沒有價值的。 因爲任何數量的框架對象可能都保留了一個對象,以保持對它的引用,同時自動釋放 池可能在對象上保存任意數量的延遲發佈,所以它不太可能獲得來自這個方法的有用信息。

三,類可以覆蓋-retainCount和返回一些定製。這通常是在具有自定義內存管理特性的類中完成的,這不能用保留計數很好地描述。這裏就是這種情況,因爲字符串文本中的字符串對象是靜態分配的,並且在程序的整個生命週期中都存在。它們不是內存管理的。因此,他們返回虛假保留計數NSUIntegerMax

+0

你一直很清楚! ;) 謝謝! –

相關問題