NSTokenFieldCell в NSTableView аварийно завершает работу во вкладках, это ошибка? - PullRequest
3 голосов
/ 27 октября 2011

У меня были проблемы с NSTokenFieldCell, поэтому я приступил к созданию нового проекта в XCode, чтобы изолировать проблему. Вот что я сделал:

  • Удалил NSTableView в главное окно;
  • выделил текстовую ячейку второго столбца и изменил ее класс (с помощью Identity Inspector) на NSTokenFieldCell;
  • реализован минимально возможный объект источника данных со следующим кодом:

    - (NSInteger)numberOfRowsInTableView:(NSTableView *)tableView {
        return 1;
    }
    
    - (id)tableView:(NSTableView *)tableView objectValueForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row {
        return @"aa, bb";
    }
    

Поначалу кажется, что все работает нормально, но если дважды щелкнуть ячейку для редактирования, затем нажать tab и shift + tab, чтобы переключать ячейки назад и вперед, в конечном итоге приложение завершается с BAD ACCESS, когда ячейка поля токена получает фокус .

Я использую Xcode 4.2 в Lion 10.7.2 со всеми настройками по умолчанию, которые поставляются с шаблоном Mac OS X Cocoa Application.

1 Ответ

3 голосов
/ 31 октября 2011

Похоже, ошибка в какао. Если вы включите зомби, вы увидите это:

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 (только для столбца токена), но я получил ту же ошибку.

...