首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Xcode 7内存泄漏

Xcode 7内存泄漏
EN

Stack Overflow用户
提问于 2015-12-11 11:56:55
回答 1查看 384关注 0票数 0

要么我做错了什么,要么我发现Xcode 7上有严重的内存泄漏。

我正在尝试制作一个简单的OS应用程序,它使用绑定从对象数组中更新表视图。

我创建了一个简单的模型:

代码语言:javascript
复制
class Episode: NSObject {
    var path: NSURL
    var series: String
    var season: Int
    var number: Int
    var name: String

    init(path:NSURL, series:String, season:Int, number:Int, name:String) {
        self.path = path
        self.series = series
        self.season = season
        self.number = number
        self.name = name
    }
}  

然后,在ViewController中指定一个插曲数组,并在viewDidLoad方法中添加两个项

代码语言:javascript
复制
import Cocoa

class ViewController: NSViewController {

    var selectedEpisodes = [Episode]()

    override func viewDidLoad() {
        super.viewDidLoad()

        // Do any additional setup after loading the view.
        selectedEpisodes.append(Episode(path: NSURL(string: "file:///")!, series: "Foo", season: 1, number: 1, name: "Foobar"))
        selectedEpisodes.append(Episode(path: NSURL(string: "file:///")!, series: "fOO", season: 10, number: 99, name: "fOObAR"))
    }

    override var representedObject: AnyObject? {
        didSet {
        // Update the view, if already loaded.
        }
    }


}

然后,我添加了一个表视图到故事板,有5列,每个属性的史诗类1。我使用以下配置向NSArrayController场景添加了一个NSArrayController:

然后选择每个NSTextField的NSTableCellView并将这个绑定配置添加到其中:

当我开始构建项目时,它构建得很好,直到它到达挂起的故事板的编译为止。一个名为ibtoold的进程启动,它很快就开始使用大量内存。

ibtoold过程泄漏

即使我停止了Xcode的编译,这个过程也不会停止。如果我不手动强制退出,它会迅速占用所有可用内存,直到整个系统崩溃。操作系统暂停其他应用程序等,以试图拯救您,但在这一点上,您只能强制重新启动计算机。

我.我做错了什么还是这是个虫子?如果我做错了什么,它是什么,如果不是,我如何修复这个简单的应用程序?

谢谢您抽时间见我。

EN

回答 1

Stack Overflow用户

发布于 2015-12-11 13:43:28

在类中添加deinit,并查看是否在控制台上出现重新初始化的消息。

代码语言:javascript
复制
    class Episode: NSObject {
        var path: NSURL
        var series: String
        var season: Int
        var number: Int
        var name: String

        init(path:NSURL, series:String, season:Int, number:Int, name:String) {
            self.path = path
            self.series = series
            self.season = season
            self.number = number
            self.name = name
        }
        deinit {
            print("\(name) is being deinitialized")
        }
    } 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34223008

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档