使用String(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
}
}
autoreleasepool示例:
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
答案 0 :(得分:0)
尝试在循环之前声明url和path。
然后应该使它重用相同的变量并释放先前的引用。