I'm using a custom object type in an NSOutlineView, for which a displayable
text value is obtained from my custom formatter's stringForObjectValue:
method.

To get easy control over text and background colors and alignment for
individual row/columns, I override preparedCellAtColumn:row:.

I'd like a reality check on the following.

My plan is to call stringForObjectValue: from preparedCellAtColumn:row:, and
store the resulting NSString (via setObjectValue:) into the cell that
preparedCell... provides.  It turns out I need the text, to determine the
colorization in some cases.  I figure calling setObjectValue: to replace the
custom class object value with its textual representation would prevent the
cell drawing code from calling stringForObjectValue: *again* to convert the
custom value to text.  It would seem to be a "throw away" situation anyway,
with the cell being reused for the whole column so nothing is lost by
replacing this value at display time.  Right?

I tried it, my app still works, and it appears setObjectValue: is not
getting called except from the preparedCell... override.


Questions are:

* Is it "a good idea" for preparedCell... to replace the custom object value
with the text value like this?

* Does it in any way encumber the reuse of the cell for the entire column?

* Should I be making a copy of the cell passed to preparedCell... and
modifying and returning the copy instead of modifying the provided cell?

* Should I instead be maintaining separate cells per ROWxCOLUMN or perhaps
separate pre-prepared cells for each combinations of text display
attributes?  (There are a finite number of attribute combinations.)


This is all guesswork for me.  I don't find that the doc really helps me
understand this in-depth and I have crafted a lot by trial and error.

Mostly I'd like to avoid creating unnecessary performance hits, since this
outline view gets updated at a high rate by incoming realtime data.


All thoughts are welcome.  Thanks in advance.

-Kurt Bigler


_______________________________________________

Cocoa-dev mailing list ([email protected])

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:
http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to [email protected]

Reply via email to