爲什麼在Zombies調試時代碼表現不一致?

 

在一些操作系統中,開啓Zombies調試功能會對ARC代碼的行爲有一些副作用。包括iOS和OS X應用都會受影響。這在iOS 6或更新以及在OS X 10.8或更新中已經被修復。

在iOS 6 / OS X 10.8之前, 使用 the Zombies instrumentNSZombieEnabled ,或者  "Enable Zombie Objects" Xcode diagnostic, 會導致ARC在釋放操作時無法清理實例變量。你的 -dealloc 方法還是會運行,但是任何沒有顯式置爲nil的實例變量都是不可以訪問的。如果有實例變量是某個對象的強引用,那麼該變量將會被這個不再使用的實例變量始終保持在內存中。

 

因此,在使用Zombies調試時,強烈建議在iOS 6 +或OS X 10.8+上運行應用。

注意:在iOS5 模擬器中運行的應用的行爲和他們在iOS 5中的表現是一致的,即便是模擬器是運行在OS X 10.8中。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章