gpt4 book ai didi

在 Swift 中使用 String 的 iOS 8 内存泄漏

转载 作者:搜寻专家 更新时间:2023-11-01 05:41:46 24 4
gpt4 key购买 nike

我在使用字符串 (NSString) 方法进行组合和提取(例如 stringByAppendingPathComponent、lastPathComponent)时发现了内存泄漏问题。

我创建了一个示例循环(见下面的代码),当我在模拟器上运行它时,设备内存没有被释放。它需要千兆字节!即使在循环结束后内存也不会减少。

我尝试使用 autoreleasepool {} 但没有成功。

有没有人知道为什么会发生这种情况以及如何补救?

我正在开发 Xcode 6.3 beta 2,包括带有 Swift 1.2 的 iOS 8.3 SDK

func memoryLeakTest() {

for _ in 1...1000000 {

let url = NSURL(scheme: "http", host: "google.com", path: "/")!
let path = url.path
}
}

自动释放池示例:

func memoryLeakTest() {

for _ in 1...1000000 {

autoreleasepool {

let url = NSURL(scheme: "http", host: "google.com", path: "/")!
let path = url.path
}
}
}

已更新

问题只发生在:
- Xcode 6.3 beta 2,包括带有 Swift 1.2 的 iOS 8.3 SDK

对以前版本执行的测试没有显示问题:
- Xcode 6.2 beta 5,包括带有 WatchKit 的 iOS 8.2 SDK
- Xcode 6.1.1

最佳答案

尝试在循环之前声明 url 和路径。

这应该会导致它重用相同的变量并释放先前的引用。

关于在 Swift 中使用 String 的 iOS 8 内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28819932/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com