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

时间:2015-03-02 21:40:26

标签: ios string swift memory-leaks ios8

使用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

1 个答案:

答案 0 :(得分:0)

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

然后应该使它重用相同的变量并释放先前的引用。