0
私はOS Xの開発が初めてで、NSTableViewで生成したデータ(約100000行)を表示したいときは、非常にスムーズにはありません。新しいデータが生成されるたびにテーブルビューをリフレッシュして、そのプロセスを目で確認することができます。多くのデータを生成し、リアルタイムでNSTableViewにロード
は、ここに私のコードの一部です:
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)
}
私はデータを生成するための新しいスレッドを使用して、テーブルビューをリフレッシュするメインスレッドに通知しますが、私が実現できることはテーブルビューは、ちょうど約4をリフレッシュしていることです回。このコードを改善して、UIをより効率的にリフレッシュさせるにはどうすればよいですか?
メインキューでの作業が少なくて済み、UIだけを更新してください。 – user3069232
はい、リロードデータがあり、メインスレッドの最後の行までスクロールします。データの生成は別のスレッドにあります – cotton