2010-07-02 28 views
0

,當我從一個指向的plist許多保留使用arrayWithContentsOfURL

NSLog(@"_url rc:[%d]",[_url retainCount]); //prints "_url rc:[1]" 
content = [NSArray arrayWithContentsOfURL:_url]; 
NSLog(@"_url rc:[%d]",[_url retainCount]); //prints "_url rc:[10]" 

我不知所措,爲什麼這是發生完全是一個URL創建一個NSArray放在NSURL。讓我知道你是否需要進一步的信息。

+3

問題是什麼?只要你照顧自己的保留和發佈,框架也會這樣做。 – chrissr 2010-07-02 20:45:15

+0

大多數情況下,框架爲數組中的每個項目執行一次保留,因爲它保留了一個指向實際值的指針。或者其他什麼......如果你正確地釋放數組,那麼url上的保留數會降低到1?如果是的話,沒有什麼好擔心的...... – 2010-07-02 20:49:40

回答

2

不要調用-retainCount。

對象的絕對保留計數是無用的除非您的代碼是唯一曾經觸及過對象。只要您通過系統API傳遞對象,絕對保留計數就不再是您可以控制的任何東西。

由於chrissr暗示,對象的保留計數應完全視爲一個增量。如果你使它增加,你應該使它減少。如果你保留,你必須釋放。如果你複製,你必須釋放。等......

+0

我很感激這個幫助,我只是好奇它爲什麼要把它彈到10. – 2010-07-02 20:51:34

+1

,因爲即使你釋放它,框架也要確保'NSURL'對象保持在附近。 :-) – 2010-07-02 20:59:41

+0

爲什麼感謝你框架:) – 2010-07-02 21:12:30