Я сделал подкласс 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;
}
Я нашел такую же проблему здесь .Там нет ответа, но может лучше описать мою ситуацию.