• 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: NSTableView & subclass of NSButtonCell - odd problem?
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: NSTableView & subclass of NSButtonCell - odd problem?


  • Subject: Re: NSTableView & subclass of NSButtonCell - odd problem?
  • From: Paul Mooser <email@hidden>
  • Date: Sat, 19 Nov 2005 18:05:07 -0800

Hi Daniel,

That must be a documentation error, since I got that header declaration from the documentation (specifically, the NSButtonCell docs). That makes sense, then, since if you look in the debugger from that crash, it references objc_msgSend_stret(), which is particularly for methods that return structures (from what I recall).

Thanks for the help Daniel, and funny to run into you here!

-Paul

On Nov 19, 2005, at 4:37 PM, Daniel Jalkut wrote:

Hi Paul!

Your problems are based in the method declaration of "drawTitle..."

I'm not really familiar with this method, because it's new in 10.4 and I haven't looked at it yet. But it looks like there is either a header file or a documentation bug, because the documentation describes this method as returning void, while the header file defines it as returning an NSRect.

Without proper documentation, it's hard to know what the "right" thing to do is, here. But I will say that replacing your drawTitle method with this makes the crash go away:

- (NSRect) drawTitle:(NSAttributedString *)title withFrame:(NSRect) frame inView:(NSView *)controlView {
[super drawTitle:title withFrame:frame inView:controlView];
return frame;
}


I suspect that the ObjC glue generated for a "void return" and for a "value return" are different. So the glue has a totally different idea of what kind of function you're providing, and somehow screws up the arguments.

Daniel

On Nov 19, 2005, at 6:37 PM, Paul Mooser wrote:

@interface Cell : NSButtonCell {
}
@end

@implementation Cell
- (id)init {
    self = [super initTextCell:@"Ready"];
    [self setButtonType:NSSwitchButton];
    return self;
}

// This next method causes a crash! controlView is a bad address
- (void)drawTitle:(NSAttributedString *)title withFrame:(NSRect) frame inView:(NSView *)controlView {
[super drawTitle:title withFrame:frame inView:controlView];
}
@end


@interface Controller : NSObject {
    NSMutableArray *_array;
    IBOutlet NSTableView *_tableView;
}
@end

@implementation Controller
- (void)awakeFromNib {
NSNumber *number = [NSNumber numberWithBool:NO];
_array = [[NSMutableArray arrayWithObjects:number,number,number, nil] retain];


Cell *cell = [[Cell alloc] init];
NSTableColumn *column = [_tableView tableColumnWithIdentifier:@"1"];
[column setDataCell:cell];
[cell release];


    // setup the data source:
    [_tableView setDataSource:self];
}

// NSTableDataSource
- (int)numberOfRowsInTableView:(NSTableView *)aTableView {
    return [_array count];
}

- (id)tableView:(NSTableView *)aTableView objectValueForTableColumn:(NSTableColumn *)column row:(int)rowIndex {
id identifier = [column identifier];
if ( [identifier isEqual:@"1"] ) {
return [_array objectAtIndex:rowIndex];
}
else
return nil;
}


- (void)tableView:(NSTableView *)aTableView setObjectValue:(id) object forTableColumn:(NSTableColumn *)column row:(int)rowIndex {
id identifier = [column identifier];
if ( [identifier isEqual:@"1"] ) {
[_array replaceObjectAtIndex:rowIndex withObject:object];
}
}
@end


_______________________________________________ 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
References: 
 >NSTableView & subclass of NSButtonCell - odd problem? (From: Paul Mooser <email@hidden>)
 >Re: NSTableView & subclass of NSButtonCell - odd problem? (From: Daniel Jalkut <email@hidden>)

  • Prev by Date: Re: Unable to load palette?
  • Next by Date: Re: Modal dialog weirdness
  • Previous by thread: Re: NSTableView & subclass of NSButtonCell - odd problem?
  • Next by thread: Newbie: Drag of Custom Type from NSOutlineView
  • Index(es):
    • Date
    • Thread