gpt4 book ai didi

objective-c - NStableview setDatasource EXC_BAD_ACCESS

转载 作者:搜寻专家 更新时间:2023-10-30 20:25:33 25 4
gpt4 key购买 nike

我正在尝试使用 NSarray 使用 NSTableView 创建一个简单的菜单。当我将数据源设置为我创建的类时,出现 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

在应用委托(delegate)中:

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
TableArray *arr = [[TableArray alloc] init];
[tv setDataSource:arr];
[tv reloadData];
}

委托(delegate) header :

#import <Cocoa/Cocoa.h>

@interface AppDelegate : NSObject <NSApplicationDelegate> {
IBOutlet NSTableView *tv;
}

@property (assign) IBOutlet NSWindow *window;

@end

最佳答案

我敢打赌您启用了 ARC(可能是 GC)。 NSTableView 维护对其数据源的弱引用,而你没有维护对其的强引用,因此 ARC 在你完成之前释放你的数据源。

请注意,数据源像这样 float 是非常罕见的。它几乎肯定是应用程序控制层的一部分,因为数据源是表和底层数据存储之间的管道。

它可能在 MacRuby 下工作,因为代码略有不同或因为实现细节。

关于objective-c - NStableview setDatasource EXC_BAD_ACCESS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14309685/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com