[英]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.