要么我做了一些非常错误的事情,要么我在Xcode 7上发现了严重的内存泄漏 我正在尝试创建一个简单的OS X应用程序,它使用绑定从一组对象更新表视图 我创建了这个简单的模型:
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方法中添加两个项目
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列,每个属性为Episode类1。我使用以下配置将NSArrayController添加到View Controller Scene:
然后我选择每个NSTableCellView的NSTextField,并将此绑定配置添加到它:
当我开始构建项目时,它构建得很好,直到它到达它挂起的故事板的编译。一个名为 ibtoold 的流程开始,它会很快开始使用大量内存。
即使我从Xcode停止编译,这个过程也不会停止。如果我不手动强制退出它,它会快速占用所有可用内存,直到整个系统崩溃。操作系统会暂停其他应用程序等,以便尝试保存您,但此时您只能强行重启计算机。
我是在做一些完全错误的事情,还是这个错误?如果我做错了什么,它是什么,如果没有,我该如何修复这个简单的应用程序? 谢谢你的时间。
答案 0 :(得分:0)
在你的班级上添加deinit,看看是否在控制台上显示了未初始化的消息。
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")
}
}