Hi all, I decided to get back to Cocoa/Objective-C programming recently and my current project calls for an NSTableView.
I thought I had gotten the process down to a Science but it appears I was wrong. I am getting an EXE_BAD_ACCESS error in the datasource method that actually returns the data.
When I run the application, all results show up on the NSTableView but shortly after, the EXE_BAD_ACCESS occurs. Occasionally, and seemingly randomly, the EXE_BAD_ACCESS error will not be thrown and instead I will get various errors in the console like the one below:
-[NSCFString objectAtIndex:]: unrecognized selector sent to instance 0x10011b780
Afterwards, the interface becomes mostly unresponsive.
From various debug messages I have been able to predict that an error is occurring because the method is being called with a row integer that is greater than the data NSArray's count. Is my Mac screwing up or am I doing something wrong? Below is my code and any help would be appreciated. Thank you!
Header File (TableViewController.h)
#import <Cocoa/Cocoa.h>
@interface TableViewController : NSObject {
IBOutlet NSTableView *tableView;
NSArray *componentArray;
}
@end
Main File (TableViewController.m)
#import "TableViewController.h"
@implementation TableViewController
- (void) awakeFromNib {
NSString *components = @"Test:Test2:Test3";
componentArray = [components componentsSeparatedByString:@":"];
[tableView setDataSource:self];
[tableView reloadData];
}
- (int)numberOfRowsInTableView:(NSTableView *)tableView {
return [componentArray count];
}
- (id)tableView:(NSTableView *)tableView objectValueForTableColumn:(NSTableColumn *)tableColumn row:(int)row {
// EXE_BAD_ACCESS is occuring here
return [componentArray objectAtIndex:row];
}
@end