2012-02-20 5 views
4

Хотя вопрос является базовым, но мне очень важно понять, как продолжить программирование IOS. Иногда мы использовали для объявления только переменную экземпляра, и мы не устанавливаем для нее никакого связанного с ней свойства. Некоторые, где мы просто объявляем свойства и используем синтез для получения или установки значений. Иногда мне нужно объявить оба кода, когда компиляция дает мне предупреждения! Что является основной причиной манипулирования свойствами в Objective C. Я знаю основное требование для создания getter и setter для любой переменной экземпляра, но когда? Я видел это много раз, мы вообще не используем свойство, и после этого мы легко устанавливаем и получаем значение переменной. Кроме того, для меня очень непонятны различные типы собственности, такие как атомные, неатомные, сильные, сохраняющие. Ускорение XCODE до 4.2 потрясло мои концепции управления памятью. Может кто-нибудь, пожалуйста, очистить облако над моим умом?Объект C: объявление декларации @property и объявление переменной экземпляра

+0

http://www.raywenderlich.com/tutorials Проверьте этот сайт на удивительные учебники. Я узнал много концепций с этого сайта. – Aaron

+0

спасибо Aaron ... –

ответ

9

Свойства всегда предпочтительный способ более прямой доступ Ивар, в основном по следующим причинам:

  • Вы можете переопределить геттер или сеттера в подклассе
  • Вы можете определить «назначая поведение» (а именно copy , assign, retain/strong, weak)
  • Вы можете синхронизировать доступ Ивар

Ключевые слова:

  • copy: Объект копируется в Ивар при установке
  • assign: указатель объекта присваивается Ивар при установленном
  • retain/strong: Объект сохраняется на набор
  • weak: В АРК это похоже на назначение, но будет автоматически установлено на nil, когда экземпляр будет освобожден, также используемый в среде сбора мусора.
  • nonatomic: Аксессор не @synchronized (поточно), и, следовательно, быстрее
  • atomic: Аксессор является @synchronized (поточно), и, следовательно, медленнее

Как правило, вы всегда должны синтезировать Ивар. Если вам нужен более быстрый доступ по соображениям производительности, вы всегда можете получить доступ к синтезированному ivar напрямую.

+0

небольшие определения для всех ключевых слов действительно полезны ... спасибо ..:) –

+0

Если это помогло вам вознаградить Эрика, нажав галочку (галочку) рядом с его ответом – zenopolis

2

При наборе текста я увидел, что «Эрик Эйгнер» был быстрее с хорошим ответом.

Например ЕМП на свойства, обобщать и пользовательские сеттер увидеть мой ответ на стек: Objective-C convention to prevent "local declaration hides instance variable" warning

Для Stater учебник по АРК см explenation на Ray wenderlich его сайт:

Beginning ARC in iOS 5 part 1 и

Beginning ARC in iOS 5 part 2

+0

Да, именно это я и ищу .. спасибо Juzz –

Смежные вопросы