我在使用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(仅用于令牌列),但是我得到了相同的错误。

10-08 12:10