我注意到,對象方法的某些引用會創建對該對象的強引用並使其在Swift中保持活動狀態。方法引用使對象在Swift中保持活躍狀態
有沒有辦法解決這個問題?是否有可能將方法參考標記爲弱?
class Counter
{
var n: Int = 0
func inc() -> Int
{
n += 1
return n
}
}
var o: Counter? = Counter()
weak var w: Counter? = o
var c:() -> (Int) = o!.inc
c() // 1
w?.n
o = nil
c() // 2 - object is still alive here
w?.n // weak reference is also alive here
是的,這與我想達到的目標非常接近。 –
恐怕OP會在這裏得出錯誤的結論。如果你從這個答案中刪除了'[弱櫃檯],你會得到完全相同的行爲。 – Rob