retainCount

This method is of no value in debugging memory management issues. Because any number of framework objects may have retained an object in order to hold references to it, while at the same time autorelease pools may be holding any number of deferred releases on an object, it is very unlikely that you can get useful information from this method.

官網(wǎng)明確表示,不要拿retainCount去調(diào)試內(nèi)存管理方面的問題,因為有自動釋放池等存在逞泄,導(dǎo)致retainCount的值并不準(zhǔn)確烦周。

PS:ARC模式下是不允許調(diào)用retainCount的帚稠,可以把ARC文件轉(zhuǎn)為MRC,在targets的build phases選項下Compile Sources下選擇要不使用ARC編譯的文件孵运,輸入-fno-objc-arc穆律;MRC轉(zhuǎn)ARC惠呼,輸入-fobjc-arc即可


以下以一個簡單的例子來說明:

-(void)test

{

NSString * str1 = [NSString stringWithFormat:@"abcdef"];

NSString * str2 = [NSString stringWithString:str1];

NSString * str3 = str1;

NSLog(@"str1:%lu,%d",(unsigned long)[str1 retainCount],[str1 retainCount]);

NSLog(@"str2:%lu,%d",(unsigned long)[str2 retainCount],[str2 retainCount]);

NSLog(@"str3:%lu,%d",(unsigned long)[str3 retainCount],[str3 retainCount]);

NSLog(@"str1地址:%p,str2地址%p",str1,str2);

NSLog(@"unsigned long:%lu",ULONG_MAX);

}

可能會以為str1,str2峦耘,str3的引用計數(shù)為1剔蹋?

下面為輸出結(jié)果:

2017-07-06 10:45:26.187 PoolTest[89591:2057536] str1:18446744073709551615,-1

2017-07-06 10:45:26.188 PoolTest[89591:2057536] str2:1,1

2017-07-06 10:45:26.188 PoolTest[89591:2057536] str3:18446744073709551615,-1

2017-07-06 10:45:26.188 PoolTest[89591:2057536] str1地址:0xa006665646362616,str2地址0x600000057ac0

2017-07-06 10:45:26.188 PoolTest[89591:2057536] unsigned long:18446744073709551615

正如官網(wǎng)所提到的,不要指望retainCount能給出正確的內(nèi)存管理辅髓,stringWithFormat是內(nèi)部使用了autorelease泣崩,而且還有自動釋放池持有當(dāng)前對象,所以也不能保證str1能像我們期望的那樣輸出1利朵。

str2是調(diào)用NSString的stringWithString? Copy創(chuàng)建了一個新的對象,可以從輸出結(jié)果的str1和str2的地址看出猎莲,stringWithString的官網(wǎng)也解釋很清楚:

Returns a string created by copying the characters from another given string.

str3是直接賦值str1绍弟,所以引用計數(shù)跟str1一樣不準(zhǔn)確,有符號的情況下輸出-1著洼,無符號的情況下輸出unsigned long 的最大值:18446744073709551615樟遣。


所以而叼,不要指望retainCount給你太多準(zhǔn)確有價值的信息,有時候?qū)ο笫菦]被任何對象持有豹悬,我們期望是retainCount為0葵陵,但是這不是絕對的,還有自動釋放池等等很多制約影響著瞻佛,內(nèi)存管理沒有我們表象或者猜想中看著那么簡單脱篙,所以retainCount是不一定準(zhǔn)確的。只要對象遵循內(nèi)存管理策略伤柄,我們可以利用Instruments工具等去診斷內(nèi)存管理問題绊困。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市适刀,隨后出現(xiàn)的幾起案子秤朗,更是在濱河造成了極大的恐慌,老刑警劉巖笔喉,帶你破解...
    沈念sama閱讀 218,036評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件取视,死亡現(xiàn)場離奇詭異,居然都是意外死亡常挚,警方通過查閱死者的電腦和手機作谭,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,046評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來待侵,“玉大人丢早,你說我怎么就攤上這事⊙砬悖” “怎么了怨酝?”我有些...
    開封第一講書人閱讀 164,411評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長那先。 經(jīng)常有香客問我农猬,道長,這世上最難降的妖魔是什么售淡? 我笑而不...
    開封第一講書人閱讀 58,622評論 1 293
  • 正文 為了忘掉前任斤葱,我火速辦了婚禮,結(jié)果婚禮上揖闸,老公的妹妹穿的比我還像新娘揍堕。我一直安慰自己,他們只是感情好汤纸,可當(dāng)我...
    茶點故事閱讀 67,661評論 6 392
  • 文/花漫 我一把揭開白布衩茸。 她就那樣靜靜地躺著,像睡著了一般贮泞。 火紅的嫁衣襯著肌膚如雪楞慈。 梳的紋絲不亂的頭發(fā)上幔烛,一...
    開封第一講書人閱讀 51,521評論 1 304
  • 那天,我揣著相機與錄音囊蓝,去河邊找鬼饿悬。 笑死,一個胖子當(dāng)著我的面吹牛聚霜,可吹牛的內(nèi)容都是我干的狡恬。 我是一名探鬼主播,決...
    沈念sama閱讀 40,288評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼俯萎,長吁一口氣:“原來是場噩夢啊……” “哼傲宜!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起夫啊,我...
    開封第一講書人閱讀 39,200評論 0 276
  • 序言:老撾萬榮一對情侶失蹤函卒,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后撇眯,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體报嵌,經(jīng)...
    沈念sama閱讀 45,644評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,837評論 3 336
  • 正文 我和宋清朗相戀三年熊榛,在試婚紗的時候發(fā)現(xiàn)自己被綠了锚国。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,953評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡玄坦,死狀恐怖血筑,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情煎楣,我是刑警寧澤豺总,帶...
    沈念sama閱讀 35,673評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站择懂,受9級特大地震影響喻喳,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜困曙,卻給世界環(huán)境...
    茶點故事閱讀 41,281評論 3 329
  • 文/蒙蒙 一表伦、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧慷丽,春花似錦蹦哼、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,889評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春赤套,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背珊膜。 一陣腳步聲響...
    開封第一講書人閱讀 33,011評論 1 269
  • 我被黑心中介騙來泰國打工容握, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人车柠。 一個月前我還...
    沈念sama閱讀 48,119評論 3 370
  • 正文 我出身青樓剔氏,卻偏偏與公主長得像,于是被迫代替她去往敵國和親竹祷。 傳聞我的和親對象是個殘疾皇子谈跛,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,901評論 2 355

推薦閱讀更多精彩內(nèi)容