我是OS X开发的新手,当我想在NSTableView中显示我生成的数据(大约100000行)时,我发现tableview的刷新不是很顺利。我希望在生成每个新数据时刷新tableview,人们可以通过他们的眼睛实现这个过程。
以下是我的代码的一部分:
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)) { () -> Void in
//var endTime: NSTimeInterval!
for i in 1...100000 {
//generate
self.models.append(DBMSModel(time: self.generateTime(NSTimeInterval(i)), money: Float(i), payType: self.payType[i % 4], payPlace: self.place[i % 4]).contentData)
// endTime = NSDate().timeIntervalSince1970
dispatch_async(dispatch_get_main_queue(), { () -> Void in
self.mainTableView.reloadData()
let numOfRows = self.mainTableView.numberOfRows
if numOfRows > 0 {
self.mainTableView.scrollRowToVisible(numOfRows - 1)
}
})
}
dispatch_async(dispatch_get_main_queue(), { () -> Void in
self.performSegueWithIdentifier("ResultAlert", sender: endTime - startTime)
})
// self.performSegueWithIdentifier("ResultAlert", sender: endTime - startTime)
}
我使用新线程生成数据,然后通知主线程刷新tableview,但我能够意识到tableview刷新了大约四次。如何改进此代码以使UI更有效地刷新?
答案 0 :(得分:0)
好吧,我好像以愚蠢的方式解决了这个问题......
hbm2ddl.auto
只需将tableview的reloaddata次数减少到100次,我发现UI动画比以前更流畅......