I am fairly new to OS X Cocoa programming but have decided to give it a go with the new Swift language.
I have an NSTableView
with 1500 rows (will be more) and 7 columns. There is one checkbox column and the rest are text fields, one with a date formate and one a currency formatter. I first set this up as cell based. Scrolling was buttery smooth (I even did a test adding 1 million rows, still smooth). This was under mavericks.
I then upgraded to Yosemite, scrolling performance significantly degraded. Enabling Core animation layer checkbox on the table view improved this but was still worse than in mavericks.
During my reading trying to improve scroll performance in Yosemite I came across "View-Based" NSTableViews. From the documentation it said cell based table views should generally not be used and are only supported for legacy projects.
I therefore converted my table to a View based table view. Sample simple concept, nothing complicated. The scrolling performance is absolutely terrible. If you scroll very slow it is smooth enough but as soon as you start to scroll faster its like it hasn't buffered enough and it starts stuttering and jerking. Also when the NSTableview
is populated, focusing and defocusing the window takes a second or more (I tried it in mavericks again and this was not present, scrolling was also a little better, but still nowhere near cell based).
Are view based NSTableviews
always bad for scrolling performance? If so why do apple recommend using them over cell based NSTableviews
.
Also some applications like safari and Reeder2 have buttery smooth scrolling even in Yosemite. How do they achieve this?
Am I missing something or is the performance of OS X just going to hell with each new thing? I.e
Mavericks > Yosemite
Cell-Based > View-Based
Old > New
Any help is much appreciated. Thanks!
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…