建立了委托和数据源连接后,我有了以下控制器:
#import <Foundation/Foundation.h>
@interface KextTable : NSObject <NSTableViewDataSource> {
@private
NSArray *klist;
}
- (int)numberOfRowsInTableView:(NSTableView *)tableView;
- (id)tableView:(NSTableView *)tableView
objectValueForTableColumn:(NSTableColumn *)tableColumn
row:(int)row;
@end和
#import "KextTable.h"
@implementation KextTable
- (id)init
{
self = [super init];
if (self) {
}
return self;
}
-(void) awakeFromNib
{
klist = [[NSArray alloc] init];
klist = [NSArray arrayWithObjects: @"1", @"2",
@"3", @"4", nil]; // debugging values only
}
- (void)dealloc
{
[super dealloc];
}
- (int)numberOfRowsInTableView:(NSTableView *)tableView
{
return [klist count];
}
- (id)tableView:(NSTableView *)tableView
objectValueForTableColumn:(NSTableColumn *)tableColumn
row:(int)row
{
return [klist objectAtIndex:row];
}
@end这段代码在我的主界面控件中使用EXC_BAD_ACCESS崩溃,其中视图切换到包含表视图的选项卡。怎么啦?
(我知道连接是正确的,如果我在objectValueForTableColumn中创建数组,它就可以工作)
发布于 2011-08-05 20:55:30
这是因为您正在创建的klist (调试klist)正在使用自动释放它的构造函数。因此,您应该添加:
klist = [[NSArray arrayWithObjects: @"1", @"2", @"3", @"4", nil] retain];请务必注意,在您所做的操作中存在内存泄漏(您创建了一个NSArray,然后将该变量重新分配给其他变量……)
https://stackoverflow.com/questions/6956580
复制相似问题