@property @synthesize

Что делают @synthesize и @property в Xcode? Просьба представить объяснение на очень простых условиях?

Вы попросили простые условия:

@property объявляет свойство в заголовке вашего classа

 @property (nonatomic, retain) NSString *myString; 

@synthesize создает ваш сеттер и getter для вашего свойства (методы доступа)

Без синтеза вы должны написать свой собственный сеттер и реализацию getter, например getMyString или setMyString (запишите первый символ вашего свойства)

Сэм: Просто совет: http://www.cocoadevcentral.com/d/learn_objectivec/ – довольно солидный ресурс, чтобы узнать об основах, подобных свойствам.

Удачи!

Свойства и синтезированные аксессоры – это новые функции в Objective-C 2.0.

Когда вы объявляете @property вы несколько объявляете экземпляр var. Затем вы @synthesize методы доступа (т.е. getter и setter) для этого свойства.

Если вам интересно, есть также @dynamic accessors.

Вы должны действительно сделать домашнее задание на этом. Для Apple это отличный pdf-файл.

Подумайте об объектно-c-магии как о простом «умном макросе», как «более разумный оператор #define» @property, если вы заметили, что всегда находится в h-файле, @synthesize всегда находится в файле m. Итак, в фоновом режиме @property (что угодно) NSString * myString;

становится объявлением двух методов и частной переменной;

 void set_myString:(NSString *) str; (NSString*) get_myString; 

объявления в файле заголовка

чтобы заставить их делать что-то, их реализация добавляется в m-файл при вводе @synthesize myString; который становится чем-то вроде void set_myString: (NSString *) str {myString = str; }

 (NSString *) get_myString { return (myString); } 

Но это разумнее, чем в зависимости от того, если вы скажете «сохранить» «сильный» или «слабый», он либо вернет указатель на myString, либо скопирует myString в новый объект

Так что все это делается автоматически компилятором, просто прочитав ваши объявления. Что весьма полезно и экономит много времени

По умолчанию все наши переменные являются Private, поэтому мы не можем выйти из classа. если мы хотим использовать нашу переменную экземпляра вне classа. Когда вы объявляете @property вы несколько объявляете экземпляр var. Затем вы @synthesize методы доступа (т.е. getter и setter) для этого свойства.

Если вам интересно, есть также @dynamic accessors.

он просто задает имя переменной setter свойства в своем собственном classе. Например, скажем, у меня есть это: @property (nonatomic, copy) NSArray* viewControllers;

Ну, если я хочу получить доступ к setter _viewController, я бы не установил переменную синтезатора. но если я хочу получить доступ к переменной viewController именем viewController вместо _viewController , я бы сделал @synthesize viewController; ,

Если бы я хотел использовать его как совершенно другое имя, я мог бы сделать это @synthesize viewControllers = viewControlololer; но это только сеттер. Как вы заметите, [self viewControllers] работает только, а не [self viewControlololer];

Поэтому я не понимаю, почему каждый пишет устанавливает «сеттер и геттер» свойства. Он вообще не изменяет переменную getter … если это не означает, что [self viewController] знает о viewControlololer (очевидно).

На самом деле свойства синтезируются, как неявно, так и явно. Свойства неявно синтезируются. Поэтому нет необходимости использовать синтезированный, если вы не хотите изменить имя переменной на нечто, отличное от _property_name.

Существуют и другие варианты использования, например, если вы не хотите, чтобы переменная экземпляра возвращала ваше свойство.

Свойства явно синтезируются с помощью директивы @synthesized.

(Ответ, извлеченный из руководства Big Nerd Ranch)

  • UIImage Сохранение изображения с именем файла на iPhone
  • Загрузите ссылку itunes для приложения перед отправкой
  • Комплект iPhone Store «Не удается подключиться к iTunes Store»
  • Вызов распознавателя жестов и действия кнопок
  • Направление настройки для UISwipeGestureRecognizer
  • iPhone - API для функции «Текст в речь»
  • Есть ли хороший учебник для внедрения приложения iPhone дополненной реальности?
  • Кто-нибудь реализовал API PayPal через собственное приложение для iPhone?
  • Как установить приложение iPhone в iPhone Simulator
  • UIScrollView. Любые мысли о реализации «бесконечной» прокрутки / масштабирования?
  • Изменение цвета оттенка / цвета UITabBar
  • Давайте будем гением компьютера.