这很奇怪。我有一个超级简单的项目来学习 NSTableView,它在我的笔尖中设置,设置为基于视图的 tableView。我还设置了数据源并委托给我的控制器对象。
然而,当我这样做并运行时,我得到一个 EXC_BAD_ACCESS,跟踪从我的主函数开始,堆栈的其余部分是 Cocoa 内部的(所以不是我的代码)。
除了这个项目使用 ARC(这是一个新项目,所以这是默认的)之外,确实没有什么特别的事情发生。
我还尝试使用分析器来确保我没有在任何地方不当进行内存管理,并且没有任何问题。
如果我不设置数据源/委托,我不会崩溃,但显然这不是构建我的应用程序的好方法!
有任何想法吗?
Edit
委托和数据源都在IB中设置。代码如下(基于视图)。需要注意的是,无论是否存在此代码,我都会遇到崩溃,并且在任何一种情况下都会发生相同的崩溃:
- (NSInteger)numberOfRowsInTableView:(NSTableView *)tableView {
return 5;
}
- (NSView *)tableView:(NSTableView *)tableView viewForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row {
NSTextField *cell = [tableView makeViewWithIdentifier:@"MyView" owner:self];
if (nil == cell) {
cell = [[NSTextField alloc] initWithFrame:CGRectZero];
cell.identifier = @"MyView";
}
[cell setStringValue:[NSString stringWithFormat:@"Row %d", row + 1]];
return cell;
}
这很简单!
我一直(有点故意)试图泄漏一个变量(因为我懒得创建一个实例变量...在这里编写快速代码),但是当然 ARC 帮我处理了这个泄漏,导致整个事情失败向上。
所以,我只需要做一个strong
属性,因此我试图保留的对象(该对象充当我的 tableView 委托和数据源)无法过早释放。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)