С наступающим Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы
Objective-C
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.78/9: Рейтинг темы: голосов - 9, средняя оценка - 4.78
smth
179 / 48 / 6
Регистрация: 23.06.2011
Сообщений: 248
1

@property или ivar

08.05.2015, 12:45. Просмотров 1646. Ответов 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. И все было понятно. В общем, хочу совета, как правильнее делать, и почему.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.05.2015, 12:45
Ответы с готовыми решениями:

Что за знак подчеркивания перед именем ivar-а?
заметил, что в XCODE 5 программа автоматически пытается постаивть знак "_": ...

property
Добрый день уважаемые форумчане! Возникла проблема со свойствами когда начал...

Property класса
Всем доброго дня! Я только начал изучать Objective C по этому прошу сильно...

@interface и @property
Здравствуйте! Объясните пожалуйста, вот я накатал класс: @interface Good :...

Property и synthesize
Доброго времени суток! Недавно начал изучать Objective-C, и столкнулся с...

1
LeonidPetrosian
0 / 0 / 0
Регистрация: 10.11.2014
Сообщений: 15
08.05.2015, 23:04 2
Сам задаюсь этим вопросом уже долгое время... Остановился на категориях, которые расширяют наш .m файл. Записываешь туда свой property, и вуаля, он доступен только в .m файле; в .h файле он отсутсвует.
Кажется легче, чем создавать ivar и определять сеттер и геттер.
Ну а в ваших примерах, где геттер и сеттер бесполезны, конечно легче создать ivar
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.05.2015, 23:04

Outlet, @property
Добрый день, встал вопрос: почему при декларации оутлета добавляется только...

@property (readonly)
Добрый вечер, Решил немного поизучать obj-c. Пока не очень привычно Вопрос...

Великие и ужасные @property
Всем привет! Уже второй месяц изучаю разработку под iOS, но все откладывал...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru