В среде выполнения Modern Objective C вы можете сделать что-то вроде этого:
@interface MyClass : NSObject {
}
@property NSString *stringProperty;
@end
@implementation MyClass
@synthesize stringProperty;
@end
Насколько я понимаю, в современной среде выполнения это будет не только синтезировать методы доступа для моего свойства, но и саму переменную экземпляра, так что я мог бы затем сказать в одном из методов этого класса [stringProperty length];
, и он будет работать так, как если Я объявил переменную экземпляра.
Я начал использовать это во всем своем коде сейчас, потому что, ну, это еще одна вещь, которую я должен писать снова и снова. И я слышал с помощью компилятора clang 2.0, я даже смогу пропустить @synthesize
(но это другое дело). Но мне было интересно, каковы некоторые недостатки этого? Когда мне действительно понадобится переменная экземпляра в дополнение к моим свойствам?
Я знаю, что иногда мне хочется сохранить переменную приватной и не предоставлять ей доступ извне (но тогда я обычно просто объявляю свойство в своем расширении частного класса, или я вообще не создаю для него свойство , если мне не нужны средства для этого).
Бывают ли случаи, когда я бы не хотел этого делать?