簡體   English   中英

如何在Swift中檢測和調試強引用周期?

[英]How to detect and debug strong reference cycles in Swift?

在簡單的情況下,它只是對幾行代碼的強烈盯着是微不足道的:

class A {
    var b: B?
}

class B {
  var a: A?
}

var a = A()
var b = B()
a.b = b
b.a = a

如何解決> 50k行代碼項目的這個問題(從Objective-C / C ++移植)。 例如,有沒有辦法開發一個工具來在運行時遍歷對象圖(就像在Java / C#世界中那樣)?

您可以使用儀器檢測強引用周期,而不是實現對象圖遍歷:它可以識別內存泄漏並以圖形方式顯示周期( Apple儀器文檔

您應該用Swift中的弱實例變量替換每個目標C弱屬性

    class B {
      weak var a: A?
    }

如果你可以確定它永遠不會將nil作為一個值,你可以用無主的前綴加上它

    class B {
      unowned var a: A
    }

然后你可以訪問該屬性,而不必強制解包變量!

如果你的Objective-C代碼使用在arc之前是常量的@properties屬性,那么可能還有更多內容

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM