Я пытаюсь просто создать простое меню с NSTableView, используя NSarray. Когда я устанавливаю источник данных в класс, который я создал, я получаю ошибку EXC_BAD_ACCESS. Странно, это работало в Macruby? файл реализации:
@implementation TableArray
- (id) init
{
self = [super init];
if(self) {
arr = [NSArray arrayWithObjects:@"hey", @"what", @"there", nil];
}
return self;
}
- (NSInteger) numberOfRowsInTableView:(NSTableView *)tableView
{
return [arr count];
}
- (id)tableView:(NSTableView *)aTableView objectValueForTableColumn:(NSTableColumn *)aTableColumn row:(NSInteger)rowIndex
{
return [arr objectAtIndex:rowIndex];
}
@end
Заголовок:
@interface TableArray: NSObject <NSTableViewDataSource> {
NSArray *arr;
}
- (NSInteger) numberOfRowsInTableView:(NSTableView *)tableView;
- (id) tableView:(NSTableView *)aTableView objectValueForTableColumn:(NSTableColumn *)aTableColumn row:(NSInteger)rowIndex;
@end
И в делегате приложения:
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
TableArray *arr = [[TableArray alloc] init];
[tv setDataSource:arr];
[tv reloadData];
}
И заголовок делегата:
#import <Cocoa/Cocoa.h>
@interface AppDelegate : NSObject <NSApplicationDelegate> {
IBOutlet NSTableView *tv;
}
@property (assign) IBOutlet NSWindow *window;
@end
TableArray
, назначаете его какdataSource
дляtv
(что является слабым свойством), а затем после этого не существует сильных ссылок наarr
, поэтому он освобождается. Сохранитеarr
где-нибудь, чтобы решить проблему. - person Carl Veazey   schedule 14.01.2013