NSCell отображается неправильно

У меня есть пользовательский NSCell в NSTableView, и он не отображается правильно. В табличном представлении содержится нужное количество элементов, но они пусты, за исключением первого. Первый показывает ячейку, но ее значения изменяются случайным образом, когда я щелкаю где-то на NSTableView. Я подозреваю, что это как-то связано с моей клеткой copyWithZone:, В моей камере нет iVars, только drawWithFrame:inView: метод, который рисует свое objectValue. В copyWithZone: я возвращаюсь [[[MyCell allocWithZone: zone] init] autorelease]

Должен ли я вернуть что-то еще?

1 ответ

Решение

Вы не должны -autorelease результат -copyWithZone:, "copy" - это одно из трех магических слов в Какао (new, alloc и copy), которые указывают, что возвращенный объект должен иметь эффективное удержание +1.

Также обратите внимание, что в какой-то момент вы всегда должны вызывать инициализатор ячейки (initImageCell: или же initTextCell:). Если твой init не вызывает один из них, то вы, вероятно, неправильно инициализируете свои ячейки. См. Подклассы NSCell.

Другие вопросы по тегам