• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
Re: NSLayoutManager and best override point for temporary attributes
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: NSLayoutManager and best override point for temporary attributes


  • Subject: Re: NSLayoutManager and best override point for temporary attributes
  • From: Martin Wierschin <email@hidden>
  • Date: Wed, 30 Sep 2009 18:50:30 -0700

Hi Keith,

I have certain custom text attributes that are used in my NSTextStorage to which I would like to add temporary attributes via the NSLayoutManager.

What version of OSX are you testing under? Under Leopard there's a bug in -[NSLayoutManager temporaryAttribute:atCharacterIndex:longestEffectiveRange:inRange:] that calculates effective ranges that are too short. For specific test cases this caused big inefficiencies in the text system. I believe this bug is fixed in Snow Leopard.


more recently I have taken to overriding NSLayoutManager's - temporaryAttributesAtCharacterIndex:effectiveRange:

If this is too slow, then I'd look to using some kind of cache for your calculations. But really, NSLayoutManager's temporary attributes are already a cache; one likely to be specifically designed for high performance index/run access. I think your original idea of setting temporary attributes whenever text changes would be the most efficient.


Perhaps you're recalculating too much, too often? I don't know the access patterns for temporary attributes, but I would guess they are only queried when associated text is displayed on screen. If that's the case, you could fix them up lazily, eg: whenever text changes just note down that the attributes are dirty in that range. Your temporary attribute methods in your NSLayoutManager subclass can then ensure that temporary attributes are not dirty before they are returned.

If none of that is efficient enough, you could rig up a NSTextStorage subclass that has two sets of attributes: one set for private use and another derived set which only the layout system sees.

Hopefully some of that helps,

~Martin

_______________________________________________

Cocoa-dev mailing list (email@hidden)

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:
This email sent to email@hidden


References: 
 >NSLayoutManager and best override point for temporary attributes (From: Keith Blount <email@hidden>)

  • Prev by Date: Re: NSDocumentController didCloseAllSelector
  • Next by Date: Re: Best Design Advice
  • Previous by thread: NSLayoutManager and best override point for temporary attributes
  • Next by thread: Static Analyzer Question
  • Index(es):
    • Date
    • Thread