Добавить свойство без переменной экземпляра?
Я пытаюсь добавить свойство без создания переменной экземпляра. Можно ли сделать это? Или вы можете сделать что-то подобное так, чтобы не было свойство?
Пример:
@interface RandomClass()
@property (nonatomic) int value;
@end
@implementation RandomClass
@synthesize value = _value;
// Here I override the default methods @synthesize
-(int)value
{
return 8; // Actually I'm returning something more complex, so a "define" won't work
}
-(void)setValue:(int)value
{
self.someOtherValue = value;
}
В приведенном выше коде я не использую переменную экземпляра _value
! Есть ли способ сделать это, не создавая переменную?
Ответы
Ответ 1
Удалите строку
@synthesize value = _value;
Поскольку вы сами реализуете getter/setter, @synthesize
не помогает.
@synthesize
выполняет два задания. Первое задание - связать свойство с базовым ivar, синтезируя ivar, если оно еще не существует. Вторая задача - синтезировать геттер/сеттер. Если вам не нужен вспомогательный ivar, и если вы предоставляете реализацию для getter/setter самостоятельно, вам вообще не нужен @synthesize
.