我在使用nstokenfieldcell时遇到问题,所以我继续在xcode中创建一个新项目来隔离问题。以下是我所做的:
在主窗口中放置了一个不稳定的视图;
选择第二列的文本单元格,并将其类(通过标识检查器)更改为nstokenfieldcell;
使用以下代码实现了最小可能的数据源对象:
- (NSInteger)numberOfRowsInTableView:(NSTableView *)tableView {
return 1;
}
- (id)tableView:(NSTableView *)tableView objectValueForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row {
return @"aa, bb";
}
起初看起来工作正常,但是如果双击要编辑的单元格,然后使用tab和shift+tab来回切换单元格,最终当令牌字段单元格收到焦点时,应用程序会因访问错误而崩溃。
我在lion 10.7.2中使用xcode 4.2,所有的默认设置都来自macosxcocoa应用程序模板。
最佳答案
看起来像可可里的虫子。如果你打开僵尸,你会看到:
2011-10-31 00:02:43.802 tokenfieldtest[35622:307] *** -[NSTokenFieldCell respondsToSelector:]: message sent to deallocated instance 0x1da761f10
我尝试为该表设置委托并实现
- (NSCell *)tableView:(NSTableView *)tableView dataCellForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row
,每次都返回一个新的NSTokenFieldCell
(仅用于令牌列),但是我得到了相同的错误。