我使用Swift开发iOS应用程序。 (Xcode 8.1,Swift 3) 我使用Instruments检查我的应用程序是否泄漏。 我注意到当一个类持有对字典的引用时,所以当我在某个函数中填充字典时,Instruments会显示泄漏。例如:
class A {
var dic : [String : Int] = [:]
func f(array: [String]){
for str in array {
dic[str] = 5
}
}
}
为什么此代码会造成泄漏? 我发现了两件事:
如果字典是函数中的局部变量,那么它就不会创建泄漏
如果我用常量替换str" some_const" - 它不会造成泄密。
如果类型是可选的,我认为它是相关的,但我试图改变它但仍然没有工作。
更新
我现在意识到它只发生在iOS 10中,并且它不仅仅是字典,还有很多奇怪的swift-lib泄漏在iOS 9中没有出现。 此外,除了因为这些泄漏之外,应用程序的内存使用量并没有显着增加。
任何人都知道可能导致泄漏的iOS 10更改?它可能是一个错误吗?