Форум программистов, компьютерный форум CyberForum.ru

Objective-C

Войти
Регистрация
Восстановить пароль
 
smth
175 / 44 / 6
Регистрация: 23.06.2011
Сообщений: 243
#1

@property или ivar - Objective-C

08.05.2015, 12:45. Просмотров 1047. Ответов 1

Добрый день! Занимаюсь Objective C недавно, и, до сегодняшнего времени, не задавался вышеупомянутым вопросом. В учебниках и статьях разброд, многие вообще все свойства выкидывают в .h файл, независимо от того, должны они светиться или нет.

Меня этот вопрос доставал потихоньку, и, наконец, я созрел: ведь, иногда, гораздо удобнее объявить ivar и пользоваться ими (без надоедающего постоянного подчеркивания, @synthesise (если свойств-переменных пара десятков) или постоянного self.propertyname). Естественно, вопрос мой касается лишь переменных, объявляемых в .m файле в секциях @interface или @implementation для внутренних нужд.

Пример 1: мне нужно объявить bool-переменную, в которой будет храниться состояние ячеек таблицы (развернуты / свернуты). Какой смысл делать для нее свойство (тянущее за собой вызов getter-setter), если я могу просто объявить ivar и пользоваться им?
Пример 2: при загрузке ViewController'а мне надо единожды загрузить в NSArray некий набор данных, например, из .plist и пользоваться этим массивом, опять же, для внутренних целей. Опять с ivar'ом проще (по крайней мере, с точки зрения написания и понятности кода).

Прочитал несколько постов на stackoverflow, потом статью на bignerdranch и окончательно запутался.

До этого я писал на шарпе, и там свойствами, в т.ч. анонимными (с которыми я и ассоциирую @property без явно заданных getter и setter) я пользовался тогда, когда к этим значениям нужен был доступ извне класса, а внутри класса - то, что здесь как раз является inctance variable. И все было понятно. В общем, хочу совета, как правильнее делать, и почему.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.05.2015, 12:45     @property или ivar
Посмотрите здесь:

Objective-C Разница между @property и объявлением переменной в классе хедера
Outlet, @property Objective-C
Objective-C Property класса
Objective-C @property (readonly)
Великие и ужасные @property Objective-C
Objective-C @property,@synthesize в Objective-C
@interface и @property Objective-C
Objective-C Что за знак подчеркивания перед именем ivar-а?
Objective-C Зачем нужно свойство @property (assign)
Работа @property в одном классе в разных методах Objective-C
Objective-C Property и synthesize

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
LeonidPetrosian
0 / 0 / 0
Регистрация: 10.11.2014
Сообщений: 15
08.05.2015, 23:04     @property или ivar #2
Сам задаюсь этим вопросом уже долгое время... Остановился на категориях, которые расширяют наш .m файл. Записываешь туда свой property, и вуаля, он доступен только в .m файле; в .h файле он отсутсвует.
Кажется легче, чем создавать ivar и определять сеттер и геттер.
Ну а в ваших примерах, где геттер и сеттер бесполезны, конечно легче создать ivar
Yandex
Объявления
08.05.2015, 23:04     @property или ivar
Ответ Создать тему
Опции темы

Текущее время: 03:30. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru