Основная цель C, определяющая и синтезирующая свойства - PullRequest
1 голос
/ 25 ноября 2010

Я работаю с Objective C уже несколько месяцев и чувствую, что, возможно, знаю 1% этого, и понимаю даже меньше, чем это ... Несмотря на это, у меня есть две умеренно популярные игры, и я узнаю больше каждый день.

Когда я только начал, я узнал, что метод определения свойств заключается в использовании одного и того же идентификатора для свойства и переменной экземпляра, как показано ниже:

code.h:

@interface MyClass : UISomething {
    NSString *myPropName;
}

@property (nonatomic, retain) NSString *myPropName;
@end

code.m

@synthesize myPropName;

Недавно я увидел, что используется следующее: переменная экземпляра именуется не так, как свойство, а затем для свойства устанавливается значение переменной экземпляра в реализации:

code.h:

@interface MyClass : UISomething {
    NSString *_myPropName;
}

@property (nonatomic, retain) NSString *myPropName;
@end

code.m:

@synthesize myPropName = _myPropName;

Есть ли причина не использовать один и тот же идентификатор для свойства и переменной экземпляра?

Спасибо! Hanaan

1 Ответ

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

Есть ли причина не использовать один и тот же идентификатор для свойства и переменной экземпляра?

Не совсем.Некоторым людям нравится соглашаться с префиксом переменных экземпляра подчеркиванием.(Мне это кажется бессмысленным.) Другим людям нравится изменять имена свойств для логических переменных:

@synthesize isEmpty = empty;

Вы также можете использовать более короткий идентификатор для переменной экземпляра и более описательное имя для свойства (audioPlayer = player).И на ум приходит одно последнее приложение, переименовывающее переменные в сочетании с протоколами:

@interface LowLevelAudioPlayer : NSObject <AudioLevelProvider> {…}

@interface Jukebox : NSObject {
    LowLevelAudioPlayer *player;
}

@property(readonly) id <AudioLevelProvider> levelMeter;
@synthesize levelMeter = player;

Здесь выгодно переименовать переменную, поскольку вы предоставляете доступ только к одному из ее аспектов.

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