2012-03-15 109 views
3

有沒有辦法在Xcode中調試時觀察對象的保留計數的更改?觀察更改以保留計數

+3

你爲什麼要這麼做? 'retainCount'並不意味着你的想法。 – 2012-03-15 20:48:31

+0

感謝大家的回答。 (請在投票前告訴我爲什麼我的問題不好) – 2012-03-15 22:17:40

+1

你應該[永遠](http://whentouseretaincount.com)觸摸'retainCount'。對於更詳細的解釋看看這裏:http://stackoverflow.com/questions/4636146/when-to-use-retaincount – 2012-03-15 20:49:20

回答

0

儀器將爲您提供此信息最有用的形式。 先使用。

如果必須,則可以覆蓋相關的方法做一些記錄:

- (oneway void) release { 
    DLog(@"%p release", self); 
    return [super release]; 
} 

- (id) retain { 
    DLog(@"%p retain", self); 
    return [super retain]; 
} 

- (id) autorelease { 
    DLog(@"%p autorelease", self); 
    return [self autorelease]; 
} 

這可能不是ARC下工作,我不知道。

ALSO,正如其他人所指出的那樣,你不應該關心你的對象的絕對保留計數。你只應該擔心你聲稱擁有並因此需要發佈的東西。參見:Calling -retainCount Considered HarmfulWhen to use -retainCount?

+1

對於'-retainCount',從來沒有**必須**,它不會給你任何相關的信息。 – 2012-03-15 21:10:12

+0

@Erik:這不是絕對正確的,並且證明它包含在Instruments中,正如我所指出的那樣。 – 2012-03-15 21:22:09

+1

樂器中包含的內容遠遠少於保留/釋放/自動釋放的所有用途的絕對保留計數以及更多的後退。只有在這種情況下,retainCount纔是有用的,但這是一個非常小的細節。 – bbum 2012-03-15 21:39:17