On Mar 2, 2015, at 8:54 AM, Ben <ben_cocoa_dev_l...@yahoo.co.uk> wrote:

> From a time profile, the majority of my code being called is funnelled 
> through a single method which handles the adding/positioning/removing of 
> views within the visible area. The slow areas are:
> 
> 8% - Instantiating new views (happens early on, views are cached for reuse)
> 20% - Positioning new/reused views (a single -setFrame: call once for each 
> view)
> 25% - Adding newly-visible subviews (-addSubview:)
> 17% - Enumerating off-screen columns for view removal 
> (-removeFromSuperviewWithoutNeedingDisplay)
> 25% - Enumerating off-screen rows for view removal 
> (-removeFromSuperviewWithoutNeedingDisplay)
> Remainder is misc small stuff. This method as a whole takes 19% of running 
> time.

What are you considering "visible" or "the visible area"?  For responsive 
scrolling, you don't want to limit it to the document view's visible rect.  You 
want to use the preparedContentRect and override -prepareContentInRect: to be 
told when that is changing.

Review this list of the "secondary" requirements to participate in responsive 
scrolling, from the AppKit release notes for 10.9 (not currently available 
online):

The list of secondary requirements are:

* Do not override -scrollWheel: in an NSScrollView, NSClipView subclass, or in 
the document view. (See the event modal notes in this section)

* Do not override -drawRect: in an NSScrollView subclass

* Do not override -lockFocus: in an NSScrollView, NSClipView subclass, or in 
the document view.

Layer backed secondary requirements:

* The root layer must be either the NSScrollView or an ancestor view

Traditional drawing secondary requirements:

* copiesOnScroll must be set to YES on the NSClipView

* The documentView must override -isOpaque and return YES

Regards,
Ken


_______________________________________________

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to