OC對象,即繼承自NSObject的對象。
當OC對象的引用計數變為0時,對象本身的dealloc方法會被調用,執行完成后,逐級向上調用父類的dealloc方法,一直調到NSObject的dealloc方法,NSObject的dealloc方法會去調用runtime的object_dispose方法,這個方法會去調用各個C++實例變量的析構函數;強引用OC實例變量的release方法,即各個實例變量的引用計數減一;解除所有關聯對象;然后解除所有的弱引用(即將指向當前OC對象的所有weak指針置空),最后調用free方法真正釋放內存。
由於實例變量最終的釋放時機是在NSObject的dealloc方法的object_dispose方法中,所以子類本身的dealloc方法中依然可以使用實例變量。
參考wwdc視頻第35分鍾左右: