2015-08-06 3 views
0

В чем разница между экземплярами и переменными-членами в контексте объектно-c. Я видел эти два термина, о которых я упоминал, но никогда четко не очерченных. Поиск google и стека не дал немедленных объяснений, поэтому я подумал, что поставил бы вопрос.Переменная экземпляра Vs. Member Variable

+1

Переменные экземпляра и переменные-члены - это два слова, означающие одно и то же. Действительно, в Objective-C обычно вы обычно используете свойства, которые автоматически генерируют переменные instance/member. – rfj001

ответ

-2

Member variable - более общий термин. В других языках, таких как C++ или Java, переменная-член может ссылаться либо на instance variable, либо на class variable (статическая переменная-член).

Объектив C не имеет переменных класса, поэтому переменная экземпляра и переменная-член являются синонимами.


В качестве примечания, в современной Objective C, переменная экземпляра (также называемые Иварс в Objective C) должны быть созданы только из авто-синтезированных свойств (как было отмечено rfj001).


UPDATE

переменной экземпляра создается только из авто синтезированных свойств является Apple, практика рекомендуется для современной Objective C.

Adopting Modern Objective-C

Используя свойства вместо экземпляра переменные в как можно большем числе мест обеспечивают множество преимуществ

Programming with Objective-C: Encapsulating Data

Это рекомендуется использовать свойство на объекте в любое время нужно следить за значением или другого объекта.

Как и во всех правилах программирования, могут возникнуть ситуации, когда вам необходимо нарушить это правило и прямо объявить ivar. Это, однако, должно быть редким исключением, а не правилом.

+1

Пожалуйста, объясните, почему вы думаете, что ивары должны быть синтезированы только из свойств. Что случилось с не-имущественными иварами? – rmaddy

+0

@rmaddy Я думаю, что вопрос должен состоять в том, что хорошо для ivar без свойства, чтобы инкапсулировать его? Абстрагирование доступа к данным стало важным шагом вперед в объектно-ориентированном программировании. –

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