Добавить свойство без переменной экземпляра? - PullRequest
12 голосов
/ 27 февраля 2012

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

Пример:

@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 Ответ

8 голосов
/ 27 февраля 2012

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

@synthesize value = _value;

Поскольку вы сами применяете метод получения / установки, @synthesize бесполезен.


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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...