[英]Deinit Called But Object Still in Memory
經過幾個小時的搜索,我終於設法(大部分)弄明白了。
在這種情況下,我有一個類A,它有6個屬性,其中一個是類B的實例。類A用類B注冊塊回調。類B接收來自主運行循環外部的事件,在一個單獨的NSThread上沒有正確包裝在@autoreleasepool中。 結果,B類保留的時間比預期的長,這導致其對A的回調被保留的時間長於預期。
我之所以說“大部分時間”都認為這是因為A級用[unowned self]
注冊了所有這些塊。 由於一個仍然未知的原因,這似乎足以讓deinit被執行,但還不足以實際釋放該對象。 在@autoreleasepool中包裝其他線程允許應用程序釋放B,這足以釋放A.
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.