2011-09-13 127 views
-2

我在我的應用程序中有一個小混亂。檢查對象是否被釋放

如何在iPhone中檢查對象是否被釋放?

+6

你不會檢查它,你會更好地管理內存的方式,你知道你的對象是否被釋放 – 2011-09-13 10:01:15

回答

12

對不起,但您正試圖解決錯誤的問題。

如果您遵循一些簡單的規則,絕對不需要「找出」對象是否已被釋放;你會知道。

簡單的規則是:

  • 如果頁頭,複製或保留的對象,那麼你是負責釋放它
  • 否則,你釋放它
負責

請勿使用retainCount。如果對象已被釋放(即其保留計數爲零),那麼你不能對對象執行任何操作,因爲它不再存在!此外,即使它是目前之一,有什麼可以說它不在自動釋放池中,並且將在您下次看到時爲

+0

+1爲理智的答案 – 2011-09-13 10:09:55

2

如果對象被釋放,那麼你不能訪問它的屬性。

您可以使用Profiler(NSZombies)來檢測哪些對象被釋放然後被訪問。

+0

我的答案有什麼問題?爲什麼是-1? – Nekto

2

當啓用殭屍時,任何發送給對象的消息就足夠了。如果程序崩潰是因爲你傳遞了一個殭屍,那麼你知道!

如果您在儀器中啓用了引用計數跟蹤,則可以查看每個引用計數事件的每個幀,並找出引入了無效引用計數偏移量的位置。