• 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: One NSOutlineView, more than one identical items
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: One NSOutlineView, more than one identical items


  • Subject: Re: One NSOutlineView, more than one identical items
  • From: Shaun Wexler <email@hidden>
  • Date: Fri, 17 Mar 2006 20:35:31 -0800

On Mar 17, 2006, at 3:32 PM, Nick Zitzmann wrote:

I realize that in the NSOutlineView documentation, it says that the view "requires that each item in the outline view be unique." But my model may include multiple items that are exactly the same.

Are there any ways I can get one NSOutlineView instance to correctly work with multiple instances of the same item being visible at once? If so, then what do I have to do to get this to work without leaking lots of memory or creating a second model filled with wrappers from the first model? I'm really not looking forward to having to wrap everything in a second model. Right now, when this case comes up, the worst I'm seeing is some redrawing glitches, but I have a feeling something worse could happen...

It sounds like your model isn't really a tree structure. Probably the best thing would be to use a lightweight tree class for the items in all of your NSOutlineView data sources, where each node has exactly one parent, and zero or more children. You can size and cache-align your items for efficiency (create a separate zone and write an object allocator which returns modulo-32-byte blocks). Example wrapper:


@interface OutlineViewItem : NSObject <NSCoding, NSCopying>
{
    int refcount;
    int flags;
    id object;
    id parent;
    NSMutableArray *children;
    NSString *name;
    NSImage *image;
}

+ (id)allocWithZone:(NSZone *)zone; // custom allocator
- (id)copyWithZone:(NSZone *)zone;
- (id)initWithCoder:(NSCoder *)decoder;
- (void)encodeWithCoder:(NSCoder *)encoder;
- (id)retain;
- (void)release;
- (int)refCount;

- (BOOL)isLeaf;
- (BOOL)isExpandable;
- (BOOL)enabled;
- (void)setEnabled:(BOOL)enabled;
- (id)representedObject;
- (void)setRepresentedObject:(id)value;
- (id)parent;
- (void)setParent:(id)value;
- (NSMutableArray *)children;
// ...
--
Shaun Wexler
MacFOH
http://www.macfoh.com

"Intellectuals solve problems, geniuses prevent them." - Albert Einstein


_______________________________________________ Do not post admin requests to the list. They will be ignored. Cocoa-dev mailing list (email@hidden) Help/Unsubscribe/Update your Subscription: This email sent to email@hidden
  • Follow-Ups:
    • Re: One NSOutlineView, more than one identical items
      • From: Nick Zitzmann <email@hidden>
    • Re: One NSOutlineView, more than one identical items
      • From: Keith Wilson <email@hidden>
References: 
 >One NSOutlineView, more than one identical items (From: Nick Zitzmann <email@hidden>)

  • Prev by Date: Re: menuNeedsUpdate delegate
  • Next by Date: Re: One NSOutlineView, more than one identical items
  • Previous by thread: One NSOutlineView, more than one identical items
  • Next by thread: Re: One NSOutlineView, more than one identical items
  • Index(es):
    • Date
    • Thread