Пользовательская ячейка какао в NSTableView: утечка подклассов NSCell - PullRequest
0 голосов
/ 22 ноября 2010

Я сделал подкласс NSCell и переопределил функцию setObjectValue для достижения моих потребностей. Все в порядке, за исключением проблемы утечки.Функция setObjectValue в NSCell, по-видимому, не освобождает свой исходный объект.

Объект, который я предоставляю классу, является объектом настройки, который соответствует протоколу NSCopying и реализовал функцию copyWithZone, как показано ниже

- (void)setObjectValue:(id < NSCopying >)object {

    // I tried to use [[self objectValue] release]; here but the app crashed 

    [super setObjectValue:object];

    //---- other iniatizlize here ---   
}

.

- (id)copyWithZone:(NSZone *)zone {
    MapComponent *newCopy = [[MapComponent allocWithZone:zone] initWithType:self.componentType];
    newCopy.myImage = self.myImage;
    return newCopy;
}

Я нашел такую ​​же проблему здесь .Там нет ответа, но может лучше описать мою ситуацию.

1 Ответ

2 голосов
/ 22 ноября 2010

Попробуйте это:

- (id)copyWithZone:(NSZone *)zone {
    MapComponent *newCopy = [[[MapComponent allocWithZone:zone] initWithType:self.componentType] autorelease];
    newCopy.myImage = self.myImage;
    return newCopy;
}
...