2011-04-26 65 views
0

那麼爲什麼你實例化NSURLConnection然後在下一行釋放它呢?我知道它涉及使用委託,但我有點困惑。NSURLConnection

+0

是否[此SO線程](http://stackoverflow.com/questions/1632168/when-to-call-release-on-nsurlconnection-delegate)有幫助嗎?看到hjon的評論,他也在談論將自己當作代表。 – dawebber 2011-04-26 03:40:05

+1

你能告訴我們你正在談論的代碼嗎?除了我的頭腦之外,我認爲這樣做的唯一原因是如果您將它分配給「保留」屬性。 – 2011-04-26 03:48:44

+0

表示同意,使用委託並不一定意味着保留NSURLConnection。 – Damien 2011-04-26 09:16:12

回答

1

安裝完成後,您不應該釋放NSURLConnection。除非當然,如果你使用它作爲retain屬性(正如@ArtGillespie指出的那樣)

當你實例化它時,保留計數將只有1,如果你釋放它,保留計數將是設置爲0,那麼該對象將從內存中清除,從那時起,您可能指向內存中的無效位置。

如果您將它作爲保留屬性,則在分配屬性值時,您將在保留計數中加1。因此,在實例化和分配後,您的保留計數將爲2。那麼正確的做法是釋放它,以便保留計數回到1,並且在連接完成後您可以正確地release對象(或將屬性設置爲nil,這也會導致對象被釋放)