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.