Подтвердить что ты не робот

Добавить свойство без переменной экземпляра?

Я пытаюсь добавить свойство без создания переменной экземпляра. Можно ли сделать это? Или вы можете сделать что-то подобное так, чтобы не было свойство?

Пример:

@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! Есть ли способ сделать это, не создавая переменную?

4b9b3361

Ответ 1

Удалите строку

@synthesize value = _value;

Поскольку вы сами реализуете getter/setter, @synthesize не помогает.


@synthesize выполняет два задания. Первое задание - связать свойство с базовым ivar, синтезируя ivar, если оно еще не существует. Вторая задача - синтезировать геттер/сеттер. Если вам не нужен вспомогательный ivar, и если вы предоставляете реализацию для getter/setter самостоятельно, вам вообще не нужен @synthesize.