物件所有引用徹底消除後進行預設的操作del方法
class
dog:
def__del__
(self)
:print
('--------物件清除----------'
)dog1 = dog(
)dog2 = dog1
del dog1 #此時並不會呼叫del方法
print
('-----------1------------'
)del dog2 #dog1物件徹底清除,此時呼叫del方法
print
('-----------2------------'
)
>>
>--
----
----
-1--
----
----
----
----
--物件清除---
----
----
----
----
-2--
----
----
--
引用計數import sys
sys.getrefcount(
)#返回結果比實際大1
import sys
classt:
pass
t = t(
)#建立乙個物件
tt = t #指向新物件t
count1 = sys.getrefcount(t)
print
(count1)
del tt
count2 = sys.getrefcount(t)
print
(count2)
>>
>
32
自動引用計數
每當你產生乙個物件,arc分配一大塊控制項去儲存這個物件。除此之外,當乙個物件是不在需要,arc 將會收回這個例項物件所佔的空間。如果乙個物件的空間被釋放掉,但是你任然通過物件的引用呼叫方法或者屬性,你的程式將要崩潰。為了不讓物件被釋放掉 arc將會追蹤有多少屬性 常量 變數正在引用這個物件。只要有...
引用計數 copy on write
拷貝通常分為值拷貝也叫淺拷貝和深拷貝,當拷貝方式為淺拷貝時就會有以下兩個問題 1 當需要調析構函式時,會出現同一塊空間被析構兩次的情況 2 如果是對指標的淺拷貝,會讓兩個指標同時管理同一塊空間,當乙個指針對這塊空間進行修改時,會影響到另外乙個指標。通過引用計數加寫時拷貝可以有效地解決這些問題。引用計...
自動引用計數
使用弱引用解決迴圈強引用 如果兩個變數屬性都可以設定為nil,那麼就用弱引用來設定其中乙個屬性來解決迴圈強引用。class person weak var apartment apartment?deinit class apartment deinit var aperson person?per...