iPhone SDK @package против @private против @public и struct - PullRequest
1 голос
/ 23 августа 2010

Эй, у меня есть действительно простой вопрос, который требует больше объяснения, чем отладки, но я видел в определениях интерфейса для многих объектов класса ключевые слова "@package", "@private", "@public",а потом еще страннее "struct {...}".Я смог сделать законченные программы, не используя ни одного из вышеперечисленных, поэтому я надеялся, что кто-нибудь сможет объяснить мне значение этих ключевых слов.*Подождите, теперь я понимаю, что ограничения каждой декларации, но зачем вам их когда-либо использовать?И можете ли вы уточнить, что означает "struct {...}" и как я ее использую?Еще раз спасибо: D

1 Ответ

6 голосов
/ 23 августа 2010

Что касается Package, на ваш вопрос здесь ответят подробно: Что делает директива @package в Objective-C?

struct - это конструкция C, которая позволяет вам обращаться к нескольким типам данных под одним именем.

@ private ограничивает доступ к переменным только этим классом

@ protected ограничивает доступ к переменным только этим классом и наследующими классами (по умолчанию в классах Obj-C)

@ package ограничивает доступ к переменным для использования фреймворком

@ public позволяет всем получить доступ к этой переменной

Редактировать:

struct person {         /* declares struct person */
int   age;
float weight;
char  name[25];
  } adam;

struct person joe;
joe.age = 23;        /* add values */
joe.weight = 147.8;    

Что касается ограничения, его хорошая ОО Практика ограничивает доступ к переменным, известным как инкапсуляция http://en.wikipedia.org/wiki/Encapsulation_%28object-oriented_programming%29

...