2012-12-18 36 views
0

我正在使用非弧寫入的庫(SMTP庫 - 通過使用編譯器標誌來保持它不是弧)。現在,我的一個類被註冊爲這個庫的委託,並且庫正在傳遞我保留數爲1的對象。預弧我應該已經釋放了這個對象,但是現在在弧中我不知道該怎麼辦?我是否必須釋放弧中的無弧對象?

回答

0

請記住,如果該類是自己釋放的,則必須先釋放ARC之前的每個類的每個實例變量。規則預ARC說,

  • 當您使用新的,分配或複製創建一個對象,該對象具有 保留1計數你是負責發送對象釋放或 自動釋放消息時你完成了它。這樣,當它的使用壽命結束時,它就會被清理乾淨 。

  • 當您通過任何其他機制獲得對象時,假定它有 保留計數爲1並且它已經被自動釋放。你不需要做任何進一步的工作,以確保它得到清理。如果你打算讓 掛在物體上一段時間,請保留它並確保在完成後釋放它。

  • 如果你保留一個對象,你需要(最終)釋放或自動釋放它。 平衡這些保留和釋放。

所以,如果你去(在一個單一功能的範圍等)暫時使用對象你什麼也不做,但不再使用,你可以保留它(增加保留計數爲2),當你做起來難釋放,初始保留數爲1將是圖書館的工作。

相關問題