Свойство Objective-C и синтезировать логику

Каково действительное имя переменной экземпляра, скажем, topSpeed, как в лекциях Стэнфордского университета о разработке Objective-C и iOS?

Вот код:

@property (nonatomic) double topSpeed;

Глядя на этот код, я буду думать, что я определил переменную topSpeed в классе. Я не могу понять, почему он будет автоматически объявлять метод получения с именем, совпадающим с именем переменной - topSpeed?

Другой вопрос, когда мы используем

@synthesize topSpeed = _topSpeed

И если мы посмотрим на то, что сгенерирует @synthesize:

- (double) setTopSpeed:(double)speed
{
   _topSpeed = speed;
}


- (double) topSpeed
{
   return _topSpeed;
}

Что такое _topSpeed здесь и что такое topSpeed? Я объявил переменную topSpeed, а не _topSpeed. Что если я не использую свойство, каким будет имя переменной?

Ответы на вопрос(3)

Ваш ответ на вопрос