[英]iOS 8 Memory leak using String in Swift
我在使用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
尝试在循环之前声明url和path。
然后,这将导致它重用相同的变量并释放先前的引用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.