В современной Objective-C вам не нужно создавать переменную экземпляра, если вы уже синтезируете свойства.
Из того, что вы пишете, кажется, что вы вводите в заблуждение свойства и ivar.
Свойства создают геттеры и сеттеры для ваших иваров, но они не являются иварами, это методы, которые получают доступ к вам, чтобы установить или получить их значения.
Ваш класс может быть подытожить так:
@interface Person : NSObject
@property NSString *firstName;
@end
@implementation Person
@end
Во время компиляции это гарантирует, что вы можете получить доступ к Ивар, используя методы и назовите ваш Ивар, как _firstName
.
Dot нотации создать доступ к свойствам так self.firstName
(с использованием ARC и свойств по умолчанию параметра -nonatomic, сильно-) вызывает метод
- (NSString*)firstName
{
return _firstName;
}
Призывая self.firstName = @"foo";
звонков:
- (void) setFirstName:(NSString*)name
{
if (_firstName == name) {
return;
}
_firstName = name;
}
, подчеркивающие реализация может быть немного иной.
Главное, что вам нужно знать, это то, что этот способ делать вещи устарел и больше не нужен, и не понадобился в течение некоторого времени. Единственное объявление переменной, которое вам нужно знать, это версия '@ property', так как это автоматически сгенерирует' ivar' ('_firstname') и' @ synhesize' для вас, что автоматически упрощает чтение кода. – Popeye