繁体   English   中英

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

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

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM