Я решил недавно вернуться к программированию на Какао / Objective-C, и мой текущий проект требует NSTableView.
Я думал, что перешел к науке, но, похоже, я ошибался.Я получаю ошибку EXE_BAD_ACCESS в методе источника данных, который на самом деле возвращает данные.
Когда я запускаю приложение, все результаты отображаются в NSTableView, но вскоре после этого появляется EXE_BAD_ACCESS.Иногда, и, казалось бы, случайно, ошибка EXE_BAD_ACCESS не будет выдана, и вместо этого я получу различные ошибки в консоли, как показано ниже:
-[NSCFString objectAtIndex:]: unrecognized selector sent to instance 0x10011b780
После этого интерфейс становится в основном не отвечающим.
Из различных сообщений отладки я был в состоянии предсказать, что происходит ошибка, потому что метод вызывается с целым числом строки, которое больше, чем число NSArray данных.Мой Mac облажается или я что-то не так делаю?
Ниже мой код:
Заголовочный файл (TableViewController.h)
#import <Cocoa/Cocoa.h>
@interface TableViewController : NSObject {
IBOutlet NSTableView *tableView;
NSArray *componentArray;
}
@end
Основной файл (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